标签:
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.
If k1 = 10
and k2 = 22
, then your function should return[12, 20, 22]
.
20
/ 8 22
/ 4 12
1 /** 2 * Definition of TreeNode: 3 * public class TreeNode { 4 * public int val; 5 * public TreeNode left, right; 6 * public TreeNode(int val) { 7 * this.val = val; 8 * this.left = this.right = null; 9 * } 10 * } 11 */ 12 public class Solution { 13 /** 14 * @param root: The root of the binary search tree. 15 * @param k1 and k2: range k1 to k2. 16 * @return: Return all keys that k1<=key<=k2 in ascending order. 17 */ 18 public ArrayList<Integer> searchRange(TreeNode root, int k1, int k2) { 19 // write your code here 20 ArrayList<Integer> list = new ArrayList<Integer>(); 21 if (k1 <= k2) { 22 traverse(root, k1, k2, list); 23 } 24 Collections.sort(list); 25 return list; 26 } 27 28 public void traverse(TreeNode node, int k1, int k2, ArrayList<Integer> list) { 29 if (node != null) { 30 if (node.val < k1) { 31 traverse(node.right, k1, k2, list); 32 } else if (node.val > k2) { 33 traverse(node.left, k1, k2, list); 34 } else { 35 list.add(node.val); 36 traverse(node.left, k1, k2, list); 37 traverse(node.right, k1, k2, list); 38 } 39 } 40 } 41 }
参考请注明出处:cnblogs.com/beiyeqingteng/
Search Range in Binary Search Tree
标签:
原文地址:http://www.cnblogs.com/beiyeqingteng/p/5642227.html