目录
1. 题目
二叉树相关的题目:
序号 | 题目 | 难度 |
---|---|---|
1 | 124. 二叉树中的最大路径和 | 困难 |
2 |
2. 应用
2.1. Leetcode 124. 二叉树中的最大路径和
2.1.1. 题目
2.1.2. 解题思路
根据题意,最大路径和一定是当前节点与左右子树的对路径的贡献之和。
由于求最大路径和的时候,需要离开当前节点的时候才能得到当前节点对当前路径的贡献。因此,这里,我们需要使用后序遍历的方式求解。
我们定义一个递归函数:int dfs(TreeNode root)
,用于返回当前节点对最大路径的贡献,在遍历每一个节点后,同时,更新最大路径和即可。
注意,由于节点有负值,因此,当某一个节点的贡献为负值时,需要将其去掉,即它对路径和的贡献为 \(0\)。
2.1.3. 代码实现
class Solution {
private int result = Integer.MIN_VALUE;
public int maxPathSum(TreeNode root) {
result = Integer.MIN_VALUE;
dfs(root);
return result;
}
private int dfs(TreeNode root) {
if (root == null) {
return 0;
}
int left = Math.max(dfs(root.left), 0);
int right = Math.max(dfs(root.right), 0);
result = Math.max(result, root.val + left + right);
return root.val + Math.max(left, right);
}
}
标签:int,路径,二叉树,应用,2.1,root,节点
From: https://www.cnblogs.com/larry1024/p/17988000