码迷,mamicode.com
首页 > 其他好文 > 详细

124. Binary Tree Maximum Path Sum

时间:2016-09-27 08:05:02      阅读:245      评论:0      收藏:0      [点我收藏+]

标签:

感觉和53.maximum subarray有相似处,维护一个localMax,一个globalMax

localMax是指左右只选一条的max,简单表示是Math.max(left, right) + nums[i].其实left和right的值因为可能是负数,所以left/right的值是0或者选

globalMax是指以当前节点为中心节点两侧总和最大,简单说是Math.max(local, global);

最后返回左右中比较大的一条供上一级节点来选择。

 

 1     int global = Integer.MIN_VALUE;
 2     
 3     public int maxPathSum(TreeNode root) {
 4         helper(root);
 5         return global;
 6     }
 7     
 8     private int helper(TreeNode root) {
 9         if(root == null) {
10             return 0;
11         }
12         int left = Math.max(0, helper(root.left));
13         int right = Math.max(0, helper(root.right));
14         global = Math.max(global, left + right + root.val);
15         return Math.max(left, right) + root.val;
16     }

 

是dfs, time complexity应该是O(n)

124. Binary Tree Maximum Path Sum

标签:

原文地址:http://www.cnblogs.com/warmland/p/5911386.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!