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
  • 相关阅读:
    委托
    apply()和call()
    Sql小技巧
    plsql中文乱码
    Windows8中使用IE8等低版本浏览器
    React Native
    谷歌浏览器添加flash白名单
    jsonp原理详解
    垂直居中
    window.moveTo(),window.moveBy()不生效
  • 原文地址:https://www.cnblogs.com/yancea/p/7506674.html
Copyright © 2011-2022 走看看