Leetcode 814. Binary Tree Pruning [Python]

Binary Tree的题目。首先分析可知,对于剪左右子树的操作和从根节点操作是同质的,所以,设置好递归的出口root == None时候的操作,就开始递归调用处理其左右子树的根节点。然后,根据题目,如果节点自身为0,且左右子树的节点也为0,其可以被忽略,返回None,因此,需要设置helper函数,查看每个节点和其左右子节点是否为0.只要有任意一点返回1,则说明这个节点要按照原样返回。如果全为0,怎返回0。

class Solution:
    def pruneTree(self, root: TreeNode) -> TreeNode:
        if not root:return None
        root.left = self.pruneTree(root.left)
        root.right = self.pruneTree(root.right)
        if root.val == 0 and self.helper(root.left) == 0 and self.helper(root.right) == 0:
            return None
        return root
    
    def helper(self, node):
        if not node:return 0
        if node.val == 0 and self.helper(node.left) == 0 and self.helper(node.right) == 0:return 0
        return 1

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值