/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val = val; }* TreeNode(int val, TreeNode left, TreeNode right) {* this.val = val;* this.left = left;* this.right = right;* }* }*/
class Solution {private int result;public int maxPathSum(TreeNode root) {result = Integer.MIN_VALUE;dfs(root);return result;}private int dfs(TreeNode root) {if (root == null) {return 0;} else {int lmax = Math.max(0, dfs(root.left));//左孩子的合法路径最大路径和int rmax = Math.max(0, dfs(root.right));//右孩子的合法路径最大路径和//更新结果result = Math.max(result, root.val + lmax + rmax);//向父节点返回合法路径中的较大一组return root.val + Math.max(lmax, rmax);}}
}