我是靠谱客的博主 乐观黑裤,最近开发中收集的这篇文章主要介绍【力扣日记】669 修剪二叉搜索树 | 递归题目描述算法思路,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

题目描述

给定一个二叉搜索树,同时给定最小边界L 和最大边界 R。通过修剪二叉搜索树,使得所有节点的值在[L, R]中 (R>=L) 。你可能需要改变树的根节点,所以结果应当返回修剪好的二叉搜索树的新的根节点。

算法思路

二叉树天然适合递归。

第一版:

class Solution:
    def trimBST(self, root: TreeNode, L: int, R: int) -> TreeNode:
        if root==None:return None
        # if root.val<L:root=root.right
        # elif root.val>R:root=root.left
        # if root==None:return None
        # root.left=self.trimBST(root.left,L,R)
        # root.right=self.trimBST(root.right,L,R)
        # return root

在这里插入图片描述
输出结果是[3,2,4],答案是[3,null,4]。
很显然,在节点1这里,root=root.right,然后节点2没有得到验证直接进行

# root.left=self.trimBST(root.left,L,R)
# root.right=self.trimBST(root.right,L,R)

然后返回了。

简单思考后:
第二版:

class Solution:
    def trimBST(self, root: TreeNode, L: int, R: int) -> TreeNode:
        if root==None:return None
        if root.val<L:root=self.trimBST(root.right,L,R)
        elif root.val>R:root=self.trimBST(root.left,L,R)
        else:
            root.left=self.trimBST(root.left,L,R)
            root.right=self.trimBST(root.right,L,R)
        return root

执行用时 :52 ms, 在所有 Python3 提交中击败了85.43%的用户

最后

以上就是乐观黑裤为你收集整理的【力扣日记】669 修剪二叉搜索树 | 递归题目描述算法思路的全部内容,希望文章能够帮你解决【力扣日记】669 修剪二叉搜索树 | 递归题目描述算法思路所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部