# 20150707 lintcode 总结 Search Range in Binary Search Tree

285人阅读 评论(0)

Given two values k1 and k2 (where k1 < k2) and a root pointer to a Binary Search Tree. Find all the keys of tree in range k1 to k2. i.e. print all x such that k1<=x<=k2 and x is a key of given BST. Return all the keys in ascending order.

Example

If k1 = 10 and k2 = 22, then your function should return [12, 20, 22].

    20
/  \
8   22
/ \
4   12

/**
* Definition of TreeNode:
* public class TreeNode {
*     public int val;
*     public TreeNode left, right;
*     public TreeNode(int val) {
*         this.val = val;
*         this.left = this.right = null;
*     }
* }
*/
public class Solution {
/**
* @param root: The root of the binary search tree.
* @param k1 and k2: range k1 to k2.
* @return: Return all keys that k1<=key<=k2 in ascending order.
*/
private ArrayList<Integer> results = new ArrayList<Integer> ();
public ArrayList<Integer> searchRange(TreeNode root, int k1, int k2) {
helper(root, k1, k2);
return results;
}

private void helper(TreeNode root, int k1, int k2) {
if (root == null) {
return;
}
if (root.val > k1) {
helper(root.left, k1, k2);
}
if (root.val >= k1 && root.val <= k2) {
}
if (root.val < k2) {
helper(root.right, k1, k2);
}

}
}


; ;; ;;;;;;;;;;;;;';:::

0
0

* 以上用户言论只代表其个人观点，不代表CSDN网站的观点或立场
个人资料
• 访问：4258次
• 积分：166
• 等级：
• 排名：千里之外
• 原创：14篇
• 转载：1篇
• 译文：0篇
• 评论：0条
文章分类