📜  数据结构 |二叉树 |问题 14(1)

📅  最后修改于: 2023-12-03 14:54:56.099000             🧑  作者: Mango

数据结构 | 二叉树 | 问题 14

介绍

二叉树是一种树形结构,每个节点最多有两个子节点。在二叉树的遍历过程中,我们可以按照不同的顺序访问节点,包括先序遍历、中序遍历、后序遍历和层序遍历等方法。

问题 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  # 返回当前子树高度
总结

本问题的解法可用于求解一些其他二叉树的最长路径问题。在程序实现中,我们使用递归的方式遍历二叉树,并使用变量保存最大值。