11. 二叉查詢樹中搜索區間
阿新 • • 發佈:2019-02-14
給定兩個值 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: * 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: 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 */ public List<Integer> searchRange(TreeNode root, int k1, int k2) { // write your code here List<Integer> list = new ArrayList<>(); inOrderRec(root, list, k1, k2); return list; } public void inOrderRec(TreeNode root, List<Integer> list, int k1, int k2){ if(root!=null){ inOrderRec(root.left, list, k1, k2); if (root.val >= k1 && root.val <= k2) { list.add(root.val); } else if (root.val> k2) { return; } inOrderRec(root.right, list, k1, k2); } } }