zoukankan      html  css  js  c++  java
  • 669. Trim a Binary Search Tree (Easy)

    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

    思路:递归(Recursion)
    1.从根节点root开始,若当前节点值小于L,则砍掉左子树,保留右子树,对右子树进行剪枝;
    2.若当前节点值大于R,则砍掉右子树,保留左子树,对左子树进行剪枝;
    3.若当前节点值位于[L,R]之间,则递归,分别对左、右子树进行剪枝;
    # Definition for a binary tree node.
    # class TreeNode:
    #     def __init__(self, x):
    #         self.val = x
    #         self.left = None
    #         self.right = None
    
    class Solution:
        def trimBST(self, root, L, R):
            """
            :type root: TreeNode
            :type L: int
            :type R: int
            :rtype: TreeNode
            """
            if not root:
                return None
            if root.val < L:
                return self.trimBST(root.right, L, R)
            if root.val > R:
                return self.trimBST(root.left, L, R)
            root.left = self.trimBST(root.left, L, R)
            root.right = self.trimBST(root.right, L, R)
            return root
  • 相关阅读:
    android---eclipse中绑定第三方源代码
    软件安装错误:invalid Drive
    android---获取设备相关信息
    android---获取cpu核心个数
    android---库工程
    eclipse---常用快捷键
    android---adb常用命令
    好用的工具
    “您即将提交的信息不安全”问题处理
    业务系统pdf样式问题01
  • 原文地址:https://www.cnblogs.com/yancea/p/7506674.html
Copyright © 2011-2022 走看看