LeetCode 124.二叉树的最大路径和
题目描述
路径 被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。
路径和 是路径中各节点值的总和。
给你一个二叉树的根节点 root ,返回其 最大路径和 。
示例1:
1 | 输入:root = [1,2,3] |
示例2:
1 | 输入:root = [-10,9,20,null,null,15,7] |
算法1
(遍历)
对于这道问题,我们需要思考的是:
- 一个节点的最大路径和到底如何计算?
根据树的递归特性,我们可以知道:一个节点的最大路径,一定是经过其左子树、右子树的最大路径,在加上当前路径大小的值
需要注意的是:
- 当左、右子树某个最大路径为负数时,我们可以不走这条路径,那么可以将路径与 0 取最大值
这样,我们遍历所有的节点,找到经过所有结点的最大路径值,这样我们就可以得到整个树中的最大路径值
1 | /** |
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.