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
  • 相关阅读:
    为什么WinCE中LoadBitmap加载位图后无法在其上DrawText?
    WinCE中加载位图的方法
    wince5+2440如何支持SDHC?
    WinCE中文字库占了这么多空间?
    【转】用MFC构造DIRECTX应用框架
    全局导出
    模板绑定
    筛选DOM元素
    获取当前所有的属性
    Canvas绘图(二)
  • 原文地址:https://www.cnblogs.com/yancea/p/7506674.html
Copyright © 2011-2022 走看看