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.
思路:递归求解。因为是二叉搜索树,我们不需要遍历所有的节点,通过prune来提高速度。
1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 * TreeNode(int x) : val(x), left(NULL), right(NULL) {} 8 * }; 9 */ 10 class Solution { 11 public: 12 int closestValue(TreeNode* root, double target) { 13 int res = root->val; 14 if (root->left != NULL && (double)res > target) { 15 int leftRes = closestValue(root->left, target); 16 res = abs(res - target) < abs(leftRes - target) ? res : leftRes; 17 } 18 if (root->right != NULL && (double)res < target) { 19 int rightRes = closestValue(root->right, target); 20 res = abs(res - target) < abs(rightRes - target) ? res : rightRes; 21 } 22 return res; 23 } 24 };
时间: 2024-11-05 12:24:43