题目:

思路:

首先,题意就是求树的左边深度与右边深度之和。答案取最大值。其次,要理解一条路径上的边数是顶点数减一。左右深度求到的是左右顶点数,加上1是中间节点,减去1是因为要求边数。所以a self.ans = max(self.ans,l+r),这里l+r不用加1了。求深度用递归。

代码:

# 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 diameterOfBinaryTree(self, root: Optional[TreeNode]) -> int:
        self.ans = 0
        def depth(root):
            if not root:return 0
            l = depth(root.left)
            r = depth(root.right)
            self.ans = max(self.ans,l+r)
            return max(l,r)+1#这里需要加1,是因为求的是子辈的深度,加一才是自己的
        depth(root)
        return self.ans


        

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐