124. 二叉树中的最大路径和 - 力扣(LeetCode)
路径 被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。
路径和 是路径中各节点值的总和。
给你一个二叉树的根节点 root ,返回其 最大路径和
这里提出一个关于这道题的错误:这道题说路径是被定义为一条从树中任意节点出发,沿着父节点-子节点连接,达到任意节点的序列。
树的路径只能从根节点到子节点,不能从子节点到达根节点。
所以这道题对于路径的定义并不正确,但题目出现的小问题并不影响做题。
问题1:
什么是路径
对于上面的这个二叉树【20,15,7】,包含的路径有如下几种
1.左节点+根节点
2.根节点+右节点
3.左节点+根节点+右节点
4.每个单独节点组成的路径
根据题意可以得出,路径是不区分经过路径的先后顺序的,也就是说路径(左节点+根节点)==路径(根节点+右节点)
最大路径的定义是:路径经过的所有节点,路径值相加最大的路径就是最大路径
最大路径和:经过的节点,每个节点数值相加得到的数值
问题2:
怎么求最大路径
用如下算法,来保存上面特殊情况的路径和(如果比当前保存的值大的话,就将特殊情况的路径和赋值给ans)