最大跟踪二叉树

时间:2012-05-20 07:18:29

标签: java

- 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();
    }

2 个答案:

答案 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)