zoukankan      html  css  js  c++  java
  • Search range in binary search tree

    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.
    
    Example
    For example, if k1 = 10 and k2 = 22, then your function should print 12, 20 and 22.
    
           /        
              22
    
      /     
          12

    遍历, 没用到bst的性质:

    public ArrayList<Integer> searchRange(TreeNode root, int k1, int k2) {
            ArrayList<Integer>  result = new ArrayList<Integer>();
            Stack<TreeNode> stack = new Stack<TreeNode>();
            
            if (root == null) {
                return result;
            }
            
            TreeNode cur = root;
            while (! stack.isEmpty() || cur != null) {
                while (cur != null) {
                    stack.push(cur);
                    cur = cur.left;
                }
                
                cur = stack.pop();
    			//中序遍历的改动点
                if (k1 <= cur.val && cur.val <= k2) {
                    result.add(cur.val);
                }
                cur = cur.right;
            }
            return result;*/
        }	
    

    递归

    public ArrayList<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 (root.val >= k1 && root.val <= k2) {
                results.add(root.val);
            }
            if (root.val < k2) {
                helper(root.right, k1, k2);
            }
    }
    

      

  • 相关阅读:
    tkinter_战队数据查询系统
    python_tkinter组件
    python_tkinter基本属性
    python_tkinter组件摆放方式
    python_推导式
    python_装饰器
    python_模块1
    python_生成随机验证码
    linux基础_使用指令3
    linux部署django项目流程(全)
  • 原文地址:https://www.cnblogs.com/apanda009/p/7239874.html
Copyright © 2011-2022 走看看