class Solution:
def diameterOfBinaryTree(self, root: Optional[TreeNode]) -> int:
# 初始化直径长度为0
self.diameter = 0
# 定义递归函数,计算二叉树每个节点为根节点时的最大深度
def getDepth(node):
if not node:
return 0
# 递归计算左子树和右子树的深度
left_depth = getDepth(node.left)
right_depth = getDepth(node.right)
# 更新直径长度为左子树深度和右子树深度之和的最大值
self.diameter = max(self.diameter, left_depth + right_depth)
# 返回当前节点为根节点时的最大深度
return 1 + max(left_depth, right_depth)
# 调用递归函数并返回直径长度
getDepth(root)
# 返回二叉树的直径长度
return self.diameter
leetcode-二叉树的直径
最新推荐文章于 2024-04-28 16:03:45 发布