Java实现:

 1 class Solution {
 2     Integer ans = Integer.MIN_VALUE;
 3     public int maxPathSum(TreeNode root) {
 4         oneSideMax(root);
 5         return ans;
 6     }
 7 
 8     public int oneSideMax(TreeNode root){
 9         if(root == null){
10             return 0;
11         }
12         int left = Math.max(0,oneSideMax(root.left));//判断左子树最大路径是否大于0
13         int right = Math.max(0,oneSideMax(root.right));//判断右子树最大路径是否大于0
14         ans = Math.max(ans,left + right + root.val);//后序遍历,是否更新全局最大路径值
15         return Math.max(left,right) + root.val;//因为这里是一条子路径,因此左右子树只能选一支
16         //如果左右子树都加到一起,那就不能和父节点组成一条路径了。
17     }
18 }

主要思想:二叉树后续遍历。 

posted on 2021-01-25 19:35  Sempron2800+  阅读(50)  评论(0编辑  收藏  举报