• 669. Trim a Binary Search Tree


    Given a binary search tree and the lowest and highest boundaries as L and R, trim the tree so that all its elements lies in [L, R] (R >= L). You might need to change the root of the tree, so the result should return the new root of the trimmed binary search tree.

    Example 1:

    Input: 
        1
       / 
      0   2
    
      L = 1
      R = 2
    
    Output: 
        1
          
           2
    

    Example 2:

    Input: 
        3
       / 
      0   4
       
        2
       /
      1
    
      L = 1
      R = 3
    
    Output: 
          3
         / 
       2   
      /
     1
    大致意思是给定一棵二叉搜索树和最小最大边界LR,修剪这棵树,使得其中的元素位于LR之间。
    思路如下,如果节点值小于L,则丢掉所有左子树,返回修剪后的右子树
    如果介于中间,修剪左右子树
    如果大于R,则丢掉所有右子树,返回修剪后的左子树

    public TreeNode trimBST(TreeNode root, int L, int R) {
            if (root == null) return root;
            if(root.val<L)
            {
                return trimBST(root.right,L,R);
            }
            else if(root.val>R)
            {
                return trimBST(root.left,L,R);
            }
            else
            {
                root.left = trimBST(root.left, L, R);
                root.right = trimBST(root.right, L, R);
                return root;
            }
        }
  • 相关阅读:
    设计模式之中介者模式
    解释器模式(行为模式)
    进程池Pool
    Process子类
    multiprocessing
    random
    re
    time和datetime
    logging 日志
    hashlib
  • 原文地址:https://www.cnblogs.com/icysnow/p/8204897.html
Copyright © 2020-2023  润新知