Leetcode 563: 二叉树的tilt

在这里插入图片描述
在这里插入图片描述
想法:
二叉树的tilt,意思是指左右子树value总和的差值。我们可以利用深度优先算法遍历二叉树,在过程中记录每个node的tilt,并把它们加起来。

代码:

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def findTilt(self, root: Optional[TreeNode]) -> int:
        #记录tilt的总和
        self.tilt = 0
        
        #深度优先算法,计算一个node的value总和
        def dfs(root):
            #如果没有node,那么value为0
            if not root: return 0
            
            #计算左子树的value总和
            left = dfs(root.left)
            #计算右子树的value总和
            right = dfs(root.right)
            
            #node的tilt等于左右子树value总和的差值
            self.tilt += abs(left - right)
            
            #一个node的value总和等于左子树的value加右子树的value,加上node的value
            return left + right + root.val
        
        dfs(root)
        return self.tilt
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值