📌  相关文章
📜  在二叉树中计算从根到自身的路径中具有最高值的节点(1)

📅  最后修改于: 2023-12-03 15:07:57.578000             🧑  作者: Mango

在二叉树中计算从根到自身的路径中具有最高值的节点

问题描述

给定一个二叉树,计算根节点到自身的路径中具有最高值的节点,并返回该节点。

示例

例如,给定以下的二叉树:

     5
    / \
   3   8
  / \   \
 4   2   9

从根节点到节点9的路径上,最高值为9,因此返回节点9。

解决思路

我们可以使用递归的方式解决这个问题。对于每一个节点,我们需要先计算出其左子树和右子树中的最高值,然后将其与当前节点的值进行比较,选择最大值。如果最大值是当前节点的值,我们就返回当前节点,否则,我们递归地遍历其左右子树。

代码实现

下面是python的代码实现:

class TreeNode:
    def __init__(self, val=0, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right

class Solution:
    def maxPath(self, root: TreeNode) -> TreeNode:
        if not root:
            return None
        
        left = self.maxPath(root.left)
        right = self.maxPath(root.right)
        
        max_node = root
        if left and left.val > max_node.val:
            max_node = left
        if right and right.val > max_node.val:
            max_node = right
        
        return max_node
总结

本题是一道典型的二叉树递归问题,通过递归地计算每一个节点的左右子树的最大值,我们可以得到路径中的最高值。这道题的时间复杂度为$O(n)$,空间复杂度为$O(n)$,其中$n$为二叉树中的节点数。