题目描述: 给定一个非空二叉树,返回其最大路径和。路径被定义为一条从树中任意节点出发,到达任意节点的一条序列。路径至少包含一个节点,且不需要经过根节点。
解题分析和主要思路
要理解并解决问题的关键在于弄清楚二叉树路径的特性:
- 路径可以从任意节点开始,到任何节点结束。
- 路径可能不经过某些节点,也可能跨越多个子树。
- 路径中不允许循环,因此路径上的父节点和子节点唯一相连。
最大路径和问题可以分解为两大子任务:
- 最大单边路径和:某节点的最大单边路径和。即从某节点延伸到一个方向(左子树或右子树)的最大和。
- 最大跨节点路径和:某节点形成的跨左右子树的路径和,可能是最大路径和的候选值。
最终,我们需要选出全局最大路径和(单边路径和 + 跨越路径和)。
解法 1:递归DFS + 后序遍历
在后序遍历的过程中,自底向上计算每个节