Binary Tree Maximum Path Sum

来源:互联网 发布:男内裤 知乎 编辑:程序博客网 时间:2024/06/07 00:40

原题地址:https://oj.leetcode.com/problems/binary-tree-maximum-path-sum/

 

This is more complicate that previous question. 

There will be four different possible scenarios for maximum path.

  1. Node only
  2. Node and L-sub
  3. Node and R-sub
  4. Node+ L-sub + R-sub
We need to keep tracing all, and return the one with max value. 

/** * Definition for binary tree * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */public class Solution {    public int maxPathSum(TreeNode root) {        int[] res = new int[1];        res[0] = Integer.MIN_VALUE;        maxPath(root,res);        return res[0];    }        public int maxPath(TreeNode root, int[] res){        if(root == null){            return 0;        }        int left = maxPath(root.left,res);        int right = maxPath(root.right,res);        int all = left+right+root.val;        int single = Math.max(root.val, Math.max(left,right)+root.val);        res[0] = Math.max(res[0],Math.max(all,single));        return single;    }}


0 0