- java - 为树
5 4 3 30 5
我需要找到“最大曲目” 所以对于这棵树,它的39(5 + 4 + 30)
我需要一个能够做到这一点的功能(Complexity O(n)) 有人能帮助我吗?
public static int GetTreePath(BinTreeNode<Integer> t){
if (t==null)
return 0;
if (t.IsLeve()){
return t.getInfo();
}else{
GetTreePath(t.getLeft());
GetTreePath(t.getRight());
}
return t.getInfo();
}
答案 0 :(得分:0)
稍微修改一下你的代码,以获得两个可能的子树的最大值。
public static int GetTreePath(BinTreeNode<Integer> t){
if (t==null)
return 0;
if (t.IsLeve()){
return t.getInfo();
}else{
return Math.max(
GetTreePath(t.getLeft()),
GetTreePath(t.getRight())
) + t.getInfo();
}
}
答案 1 :(得分:0)
有一个DP解决方案。
F(i) = max(F(child) + value(i))
calculate(f)
从树叶到根,或递归并保存f(i)