📅  最后修改于: 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$为二叉树中的节点数。