加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Get Keys In Binary Search Tree In Given Range - Easy

发布时间:2020-12-14 05:16:25 所属栏目:大数据 来源:网络整理
导读:Get the list of keys in a given binary search tree in a given range[min,max] in ascending order,both min and max are inclusive. Examples ? ? ? ? 5 ? ? ? / ? ? ? ? 3 ? ? ? ?8 ? / ? ? ? ? ? ?1 ? ? 4 ? ? ? ?11 get the keys in [2,5] in asc

Get the list of keys in a given binary search tree in a given range[min,max] in ascending order,both min and max are inclusive.

Examples

? ? ? ? 5

? ? ? / ? ?

? ? 3 ? ? ? ?8

? / ? ? ? ? ?

?1 ? ? 4 ? ? ? ?11

get the keys in [2,5] in ascending order,result is??[3,4,5]

Corner Cases

  • What if there are no keys in the given range? Return an empty list in this case.

?

?

inorder traversal + 剪枝

如果当前node.val > min,走左子树;如果当前node.val在min~max之间,加入res中;如果当前node.val < max,走右子树

time: O(h + # of nodes in [min,max]),space: O(h)

/**
 * public class TreeNode {
 *   public int key;
 *   public TreeNode left;
 *   public TreeNode right;
 *   public TreeNode(int key) {
 *     this.key = key;
 *   }
 * }
 */
public class Solution {
  public List<Integer> getRange(TreeNode root,int min,int max) {
    // Write your solution here
    List<Integer> res = new ArrayList<>();
    if(root == null || min > max) {
      return res;
    }
    helper(root,min,max,res);
    return res;
  }
  
  public void helper(TreeNode root,int max,List<Integer> res) {
    if(root == null) {
      return;
    }
    if(root.key > min) {
      helper(root.left,res);
    }
    if(root.key >= min && root.key <= max) {
      res.add(root.key);
    }
    if(root.key < max){
      helper(root.right,res);
    }
  }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读