[英]height of a N-ary tree
我尝试编写一种名为getHeight()
的方法来计算am 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()
调用getHeight()
,并返回1 +每个子树的最大值。 (如果您的树具有任何余额属性,则可以简化此操作。)
例如,如果要在其上调用的树具有三个子树,其高度分别为2、4和5,则代码将在第一个子树上调用getHeight()
并看到2,然后立即返回3,而不是检查getHeight()
在其余的子树上找到一个更高的子树(高度为5的子树)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.