题目链接:
124. 二叉树中的最大路径和 - 力扣(LeetCode)
解题思路:
-
首先题目的意思 路径和,是指能构成一条路径的 最大值,简单点来说,就是找打,一条以一个节点为 跟节点,左子树和右子树 都分别只取一侧构成一条 路径
-
我们需要遍历每个节点,产生负值的左子树或者右子树,就不需要考虑这个的价值了。遍历时 ,返回当前节点只取 左子树,或者右子树所产生的最大值 ,这样就可以在递归遍历的时候,看当前节点是不是 满足 以当前节点为 根 作为路径 是最大值即可
代码:
javascript
/**
* @param {TreeNode} root
* @return {number}
*/
var maxPathSum = function (root) {
let res = Number.MIN_SAFE_INTEGER;
function getMax(root) {
if (root === null) return 0;
let leftMax = Math.max(getMax(root.left), 0)
let rightMax = Math.max(getMax(root.right), 0)
let curMax = root.val + leftMax + rightMax
res = Math.max(res, curMax)
return root.val + Math.max(leftMax, rightMax)
}
getMax(root)
return res;
};