您的位置:首页 > 其它

LintCode 11二叉查找树中搜索区间

2018-03-14 19:27 351 查看
给定两个值 k1 和 k2(k1 < k2)和一个二叉查找树的根节点。找到树中所有值在 k1 到 k2 范围内的节点。即打印所有x (k1 <= x <= k2) 其中 x 是二叉查找树的中的节点值。返回所有升序的节点值。
二查搜索树的特点是左孩子比根节点val小,右孩子比根结点的val大,根据这一特点一直递归下去即可class Solution {
public:
vector<int> ans;
void f(TreeNode * root,int k1,int k2){
if(root==NULL)return ;
if(root->val>=k1&&root->val<=k2){
ans.push_back(root->val);
}
if(root->val>=k1){
f(root->left,k1,k2);
}
if(root->val<=k2){
f(root->right,k1,k2);
}
return;
}
/**
* @param root: param root: The root of the binary search tree
* @param k1: An integer
* @param k2: An integer
* @return: return: Return all keys that k1<=key<=k2 in ascending order
*/
vector<int> searchRange(TreeNode * root, int k1, int k2) {
// write your code here
f(root,k1,k2);
sort(ans.begin(),ans.end());
return ans;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: