我因言语和想法而迷失。我正在使用多态二叉搜索树,我需要计算树的高度。 NonEmptyTree实现Tree接口并具有所有必需的方法。我遇到的问题实际上是调用高度方法。我不确定我做错了什么,这可能是因为我接近了我似乎无法找到可能是明显问题的项目。
还有一个名为EmptyTree的类,它也实现了Tree接口。以下是所有相关方法。
public class PolymorphicBST<K extends Comparable<K>, V> {
public int height() {
return this.height();
}
public int height() {
int lDepth = left.height();
int rDepth = right.height();
if (lDepth == 0 || rDepth == 0) {
return 0;
} else if (Math.abs(lDepth - rDepth) > 1) {
return 0;
}
return Math.max(lDepth, rDepth) + 1;
}
heightAux方法中的代码用于计算树的实际高度。当我调试程序时,无论我插入了多少个断点以及多少次按下&#34;进入&#34;它就永远不会离开JUnit类。当我按下resume项目时,我得到一个StackOverflow错误。这是一个学校项目,所以我没有显示与问题相关的所有代码。任何帮助将不胜感激!!
所以,我知道摆脱了辅助方法,因为我认为没有必要达到这个高度。
答案 0 :(得分:2)
public int height() {
return this.height();
你的height()方法通过说this.height()来调用自己。由于没有退出点,这将进入无限循环。
答案 1 :(得分:0)
我刚才发现了问题。我需要说root.height。树的根确定它是EmptyTree还是NonEmptyTree