今日算法之_128_二叉树的最大路径和
前言
Github:https://github.com/HealerJean
1、二叉树的最大路径和
示例:
给定二叉树 [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回它的最大路径和 3 + 20 + 7 = 30。
1.1、解题思路
和求最大深度一样
1.2、算法
public int treePathMax(TreeNode treeNode) {
if(treeNode == null){
return 0;
}
int maxLeft = treePathMax(treeNode.left);
int maxRight = treePathMax(treeNode.right);
return Math.max(maxLeft, maxRight) + treeNode.val;
}
1.3、测试
@Test
public void test(){
System.out.println(treePathMax(initTreeNode()));
}
public TreeNode initTreeNode(){
TreeNode treeNode1 = new TreeNode(20, null ,null);
TreeNode treeNode2 = new TreeNode(6, null , null);
TreeNode treeNode3 = new TreeNode(5, treeNode1, treeNode2);
TreeNode treeNode4 = new TreeNode(1, null, null);
TreeNode root = new TreeNode(5, treeNode3, treeNode4);
return root ;
}
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) {
val = x;
}
TreeNode(int x, TreeNode left, TreeNode right) {
this.val = x;
this.left = left;
this.right = right;
}
}