lintcode-二叉查詢樹中搜索區間-11
阿新 • • 發佈:2019-02-18
給定兩個值 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; } };