/ * *找到BST树的高度 * /
public void findHeight(){
if(this.root == null){
System.out.println("BST Tree is Empty ");
}
else
findHeight(this.root);
}
public int findHeight(Tnode temp){
if(temp == null){
System.out.println("BST Tree is Empty ");
return -1;
}
else{
return 1 + Math.max(findHeight(temp.getLeft()) ,findHeight(temp.getRight()) ) ;
}
}
程序无限运行。无法找到原因,如果有人指导我会有所帮助
提前致谢
答案 0 :(得分:0)
你确定findHeight()函数没有返回任何内容吗?你期待这个功能吗?发布更多代码会有所帮助。
答案 1 :(得分:0)
“BST Tree is Empty”也将打印在树的每个终端叶子上。
要了解发生了什么,可以添加一些调试输出:
private spaces(int len){
String s = " ";
while (s.Length < len) {
s += " ";
}
return s.substring(0, len);
}
public int findHeight(Tnode temp, int nesting, String msg){
String margin = spaces(2*nesting);
if(temp == null){
System.out.println(margin + msg + ": no sub-tree to explore");
return -1;
}
else{
System.out.println(margin + msg);
int hl = findHeight(temp.getLeft(), nesting + 1, "left");
int hr = findHeight(temp.getRight(), nesting + 1, "right");
return 1 + (hl >= hr ? hl : hr) ;
}
}
您的无限递归可能是由于树结构中的某些错误造成的。如果您的左/右子引用永远不为null,则递归不会终止。