Given a non-empty binary search tree and a target value, find the value in the BST that is closest to the target.
Note:
- Given target value is a floating point.
- You are guaranteed to have only one unique value in the BST that is closest to the target.
1 /** 2 * Definition for a binary tree node. 3 * public class TreeNode { 4 * public int val; 5 * public TreeNode left; 6 * public TreeNode right; 7 * public TreeNode(int x) { val = x; } 8 * } 9 */ 10 public class Solution { 11 public int ClosestValue(TreeNode root, double target) { 12 TreeNode candidate = null; 13 DFS(root, target, ref candidate); 14 return candidate.val; 15 } 16 17 private void DFS(TreeNode node, double target, ref TreeNode candidate) 18 { 19 if (node == null) return; 20 21 if (candidate == null || (Math.Abs((double)node.val - target) < Math.Abs((double)candidate.val - target))) 22 { 23 candidate = node; 24 } 25 26 if ((double)node.val > target) 27 { 28 DFS(node.left, target, ref candidate); 29 } 30 else 31 { 32 DFS(node.right, target, ref candidate); 33 } 34 } 35 }