標籤:
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 };
Closest Binary Search Tree Value -- LeetCode