📅  最后修改于: 2023-12-03 14:54:56.099000             🧑  作者: Mango
二叉树是一种树形结构,每个节点最多有两个子节点。在二叉树的遍历过程中,我们可以按照不同的顺序访问节点,包括先序遍历、中序遍历、后序遍历和层序遍历等方法。
问题 14:给定一个二叉树,找到最长的路径,这个路径的两个节点之间的距离是最大的。这个路径可能不经过根节点。
为了解决这个问题,我们需要计算每个节点的左右子树的高度并相加,找到最大值即可。
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: TreeNode) -> int:
self.result = 0 # 记录最大值
self.helper(root)
return self.result
def helper(self, root: TreeNode) -> int:
if not root:
return 0
left = self.helper(root.left) # 左子树高度
right = self.helper(root.right) # 右子树高度
self.result = max(self.result, left + right) # 更新最大值
return max(left, right) + 1 # 返回当前子树高度
本问题的解法可用于求解一些其他二叉树的最长路径问题。在程序实现中,我们使用递归的方式遍历二叉树,并使用变量保存最大值。