java - 最大轨道二叉树

标签 java

--java-- 对于树

     5
  4     3
30  5     

我需要找到“最大轨道” 所以对于这棵树来说,它是 39 (5​​+4+30)

我需要一个函数来做到这一点(复杂度 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();
    }

最佳答案

只需稍微修改一下代码即可获得两个可能的子树的最大值。

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

关于java - 最大轨道二叉树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10671545/

相关文章:

java - Java 中的链接状态通知

java - 如果正在运行,Android 服务会与 Activity 对话吗?

java - 'for' 和 'switch' 之间有冲突吗?

java - 在java中编码特殊字符

java - 定时器的问题 - android

java - 正则表达式替换不正确的查询

java - 二分查找,计算重复项

java - 用java来表示内存中的文件结构?

JAVA:按序号返回枚举对象名称

java - 并行插入/更新期间发生死锁