Leetcode 270: Closest Binary Search Tree Value
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 var candidate = new int[] {Int32.MaxValue}; 13 DFS(root, target, candidate); 14 return candidate[0]; 15 } 16 17 private void DFS(TreeNode node, double target, int[] candidate) 18 { 19 if (node == null) return; 20 21 if (candidate[0] == Int32.MaxValue) 22 { 23 candidate[0] = node.val; 24 } 25 else 26 { 27 double d1 = Math.Abs((double)node.val - target); 28 double d2 = Math.Abs((double)candidate[0] - target); 29 30 if (d1 < d2) 31 { 32 candidate[0] = node.val; 33 } 34 } 35 36 if ((double)node.val > target) 37 { 38 DFS(node.left, target, candidate); 39 } 40 else 41 { 42 DFS(node.right, target, candidate); 43 } 44 } 45 }

浙公网安备 33010602011771号