给定一个非空二叉树,返回其最大路径和。
本题中路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。
示例 1:
输入: [1,2,3]
1
/ \
2 3
输出: 6
示例 2:
输入: [-10,9,20,null,null,15,7]
-10
/ \
9 20
/ \
15 7
输出: 42
题解思路
1. 从 dfs(-10) 开始,
1.1 dfs(9):
1.1.1 左孩子为空;贡献为 0
1.1.2 右孩子为空,贡献为 0
1.1.3 更新 res = max (-∞,(9 + 0 + 0)) = 9
1.1.4 返回 dfs(9) = 9 + max(左孩子贡献,右孩子贡献)) = 9
1.2 dfs(20)
1.2.1 dfs(15):
1.2.1.1 左孩子为空;贡献为0
1.2.1.2 右孩子为空,贡献为0
1.2.1.3 更新 res = max(9, 15 + 0 + 0) = 15
1.2.1.4 返回 dfs(15) = 15 + 0 = 15
1.2.2 dfs(7):
1.2.2.1 左孩子为空;贡献为 0
1.2.2.2 右孩子为空,贡献为 0
1.2.2.3 更新 r