java - N 叉树的高度

标签 java data-structures

我尝试编写一个名为 getHeight() 的方法来计算 N 叉树的高度。我的尝试不起作用。这是我正在使用的树界面:

public interface MyTree  {
    Tree getSubTree(int i) ;//returns a subtree
    boolean isLeaf() ;//returns true if the node is a leaf
    int getDegree() ; 
}   

这是我写的一段代码:

public int getHeight(){

    for(int i = 0 ; i<getDegree()-1 ; ++i){  

        if(isLeaf()){
            return 0; 

        }else{
            return 1 + Math.Max(getSubtree(i).getHeight() , getSubtree(i+1).getHeight() ; 
        }
    }
}

如何修复此方法?

最佳答案

您的问题在这里:

 return 1 + getSubtree(i).getHeight(); 

一旦计算出 1 + 单个子树的高度,您就会从该方法返回。您实际需要做的是在每个子树上调用 getHeight() ,并返回 1 + 每个子树的最大值。 (如果您的树具有任何平衡属性,这可以简化。)

例如,如果您调用此方法的树有三个子树,高度分别为 2、4 和 5,则您的代码将在第一个子树上调用 getHeight() 并看到 2,然后立即返回 3,而不是检查剩余子树上的 getHeight() 来查找是否存在更高的子树(高度为 5 的子树)。

关于java - N 叉树的高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20861991/

相关文章:

java - 范围网络服务

java - 反序列化包含 arraylist 内容的文件仅显示 1 个元素存在

c# - B-Trees/B+Trees 和重复键

c - 链接列表总是显示为空

将成对列表转换为字典的 Pythonic 方法

java - 存储一组字符串的最佳方式是什么

java - 在没有 web.xml 的情况下处理 JavaEE 中的异常

java - 是什么让终结器如此昂贵?

javascript - 如何通过索引数组重新排列数组?

java - 在有障碍物的二维矩阵中找到到达给定目标单元格的最短路径