📅  最后修改于: 2023-12-03 15:40:01.381000             🧑  作者: Mango
给定一个二叉树,返回其结点之间的最大距离。
最大距离的定义是两个结点之间路径长度的最大值。
注意:路径长度是指路径上的结点数减一,例如路径上有3个结点,则路径长度为2。
通过遍历二叉树,求出每个结点的左右子树深度(路径长度),最后求出最大深度之和即可。
具体做法如下:
实现代码如下:
class Solution:
def __init__(self):
self.max_depth = 0
def max_distance(self, root: TreeNode) -> int:
if not root:
return 0
self.depth(root)
return self.max_depth
def depth(self, root: TreeNode) -> int:
if not root:
return 0
left_depth = self.depth(root.left)
right_depth = self.depth(root.right)
self.max_depth = max(self.max_depth, left_depth + right_depth)
return max(left_depth, right_depth) + 1
这道题目可以通过遍历二叉树来解决,使用递归可以轻松地求出每个结点的深度。最终求出深度之和的最大值即可得到所求的答案。需要注意,路径长度是指路径上的结点数减一。