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:
分析:
按照正常的搜索路径,直到搜索到叶节点,选出在这个路径上离target最近的值返回
代码:
void dfs(TreeNode *cur, int &cv, double target) { if(!cur) return; double num = double(cur->val) - target; if(abs(num) < abs(double(cv) - target)) cv = cur->val; if(num > 0) dfs(cur->left, cv, target); else dfs(cur->right, cv, target); return; }
Closest Binary Search Tree Value II
Given a non-empty binary search tree and a target value, find k values in the BST that are closest to the target.
Note:
Follow up:
Assume that the BST is balanced, could you solve it in less than O(n) runtime (where n = total nodes)?
Hint:
getPredecessor(N)
, which returns the next smaller node to N.getSuccessor(N)
, which returns the next larger node to N.
[Locked] Closest Binary Search Tree Value & Closest Binary Search Tree Value II
原文:http://www.cnblogs.com/littletail/p/5216502.html