基本思路
遍历整颗树,累加从根节点到当前节点的路径累积和,然后判断当前路径是否满足条件,不能在当前节点判断上层父路径是否满足条件,因为输入的路径和可能为0,会造成结果错误。
112. 路径总和
113. 路径总和 II
437. 路径总和 III
描述:寻找任意一条路径上大的任意两个节点间的满足路径和要求的路径数量
- 双递归:https://leetcode-cn.com/problems/path-sum-iii/comments/
- 前缀和:https://leetcode-cn.com/problems/path-sum-iii/solution/qian-zhui-he-di-gui-hui-su-by-shi-huo-de-xia-tian/
687. 最长同值路径
全局最长路径节点数int globalLongestPath = 0;
设根节点node, 左孩子left, 右孩子right
g(node)为从node单向延申(向left,right)的最长路径
f(node)为经过node的双向延申的最长路径(向left,right延申)
g(node) = Math.max(left.val==node.val?g(left):0,right.val==node.val?g(right):0);
f(node) = (left.val==node.val?g(left):0) + (right.val==node.val?g(right):0);
全局最长路径节点数量为所有节点的f(node)的最大值
