lintcode-二叉查找树中搜索区间-11

来源:互联网 发布:制作印章软件 编辑:程序博客网 时间:2024/06/05 19:02

给定两个值 k1 和 k2(k1 < k2)和一个二叉查找树的根节点。找到树中所有值在 k1 到 k2 范围内的节点。即打印所有x (k1 <= x <= k2) 其中 x 是二叉查找树的中的节点值。返回所有升序的节点值。


样例

如果有 k1 = 10 和 k2 = 22, 你的程序应该返回[12, 20, 22].

    20   /  \  8   22 / \4   12
/** * Definition of TreeNode: * class TreeNode { * public: *     int val; *     TreeNode *left, *right; *     TreeNode(int val) { *         this->val = val; *         this->left = this->right = NULL; *     } * } */class Solution {public:    void middle_order(TreeNode *root,vector<int> &base,int k1,int k2){        if(!root)            return ;        middle_order(root->left,base,k1,k2);        if(root->val<=k2&&root->val>=k1)            base.push_back(root->val);        middle_order(root->right,base,k1,k2);    }        vector<int> searchRange(TreeNode* root, int k1, int k2) {        vector<int> ret;        if(!root)            return ret;        middle_order(root,ret,k1,k2);        return ret;    }};


0 0