二叉树的直径-python-递归
·
题目:


思路:
首先,题意就是求树的左边深度与右边深度之和。答案取最大值。其次,要理解一条路径上的边数是顶点数减一。左右深度求到的是左右顶点数,加上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
更多推荐


所有评论(0)