代码随想录刷题第二十三天| 669. 修剪二叉搜索树 ● 108.将有序数组转换为二叉搜索树 ● 538.把二叉搜索树转换为累加树 ● 总结篇|

代码随想录刷题第二十三天

修剪二叉搜索树 (LC 669)

题目思路:

在这里插入图片描述

代码实现:

class Solution(object):
    def trimBST(self, root, low, high):
        """
        :type root: TreeNode
        :type low: int
        :type high: int
        :rtype: TreeNode
        """
        if root is None:
            return None
        
        if root.val > high:
            if root.left is None and root.right is None:
                return None
            elif root.left is None and root.right is not None:
                return None
            else:
                return self.trimBST(root.left, low, high)
        elif root.val < low:
            if root.left is None and root.right is None:
                return None
            elif root.left is not None and root.right is None:
                return None
            else:
                return self.trimBST(root.right, low, high)
        
        else:
            root.left = self.trimBST(root.left, low, high)
            root.right = self.trimBST(root.right, low, high)

        return root

将有序数组转换为平衡二叉树 (LC 108)

题目思路:

在这里插入图片描述

代码实现:

class Solution(object):
    def sortedArrayToBST(self, nums):
        """
        :type nums: List[int]
        :rtype: TreeNode
        """
        if len(nums) == 0:
            return None
        
        mid = len(nums)//2
        print(mid)
        newnode = TreeNode(nums[mid])
        left_list = nums[:mid]
        right_list = nums[mid+1:]
        newnode.left = self.sortedArrayToBST(left_list)
        newnode.right = self.sortedArrayToBST(right_list)
        return newnode

把二叉搜索树转换为累加数 (LC 538)

题目思路:

在这里插入图片描述

代码实现:

class Solution(object):
    def __init__(self):
        self.sum = 0
    def convertBST(self, root):
        """
        :type root: TreeNode
        :rtype: TreeNode
        """
        if root is None:
            return None
        
        root.right = self.convertBST(root.right)
        value = self.sum+root.val
        root.val = value
        self.sum = value
        root.left = self.convertBST(root.left)

        return root
  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值