zoukankan      html  css  js  c++  java
  • Get Keys In Binary Search Tree In Given Range

    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 min, int max, List<Integer> res) {
        if(root == null) {
          return;
        }
        if(root.key > min) {
          helper(root.left, min, max, res);
        }
        if(root.key >= min && root.key <= max) {
          res.add(root.key);
        }
        if(root.key < max){
          helper(root.right, min, max, res);
        }
      }
    }
  • 相关阅读:
    jenkins学习:jenkins+maven
    git学习
    jenkins学习:jenkins+gitlab
    mongodb安装和运行
    ideaJ+maven+javaweb实践: sevlet实现upload&download,javaIO代码
    pageObject学习
    postman接口测试
    TODO 软件测试68题
    testng优化:失败重跑,extentReport+appium用例失败截图,测试报告发邮件
    testng报告-extentsReports使用-klov
  • 原文地址:https://www.cnblogs.com/fatttcat/p/10234464.html
Copyright © 2011-2022 走看看