Search Range in Binary Search Tree

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
     */
		private ArrayList<Integer> results;
		
		public List<Integer> searchRange(TreeNode root, int k1, int k2) {
			results = new ArrayList<Integer>();
			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 (k1 <= root.val && root.val <= k2) results.add(root.val);
			if (root.val < k2) helper(root.right, k1, k2);
			
		}
}



Time Complexity: O(N)   介于 logN 和 O(N)之间
Space Complexity 

最后更新于

这有帮助吗?