270. Closest Binary Search Tree Value
tree dfs
Input: root = [4,2,5,1,3], target = 3.714286
Output: 4Input: root = [1], target = 4.428571
Output: 1Last updated
tree dfs
Input: root = [4,2,5,1,3], target = 3.714286
Output: 4Input: root = [1], target = 4.428571
Output: 1Last updated
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def closestValue(self, root: Optional[TreeNode], target: float) -> int:
res = root.val
diff = abs(root.val - target)
def dfs(node):
nonlocal res, diff
if node is None:
return
cur_diff = abs(node.val - target)
if cur_diff < diff:
diff = cur_diff
res = node.val
elif cur_diff == diff:
res = min(res, node.val)
if target < node.val:
dfs(node.left)
else:
dfs(node.right)
dfs(root)
return res
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def closestValue(self, root: Optional[TreeNode], target: float) -> int:
res = root.val
diff = abs(root.val-target)
while root:
if abs(root.val - target) < diff:
res = root.val
diff = abs(root.val - target)
elif abs(root.val - target) == diff:
res = min(res,root.val)
if root.val > target:
root = root.left
else:
root = root.right
return res