我想检查一下二元搜索树是否退化(它是一个链表还是一棵树?)我已经尝试了一段时间并且没有提出任何有效的方法。我确实提出了一个非递归的解决方案,我认为它非常聪明,但规范说明它必须是一个递归解决方案,并且我已经将它从非递归转换为递归。
这是我的非递归解决方案(实际上并不是因为大小和高度都是递归实现的。但是这种方法不是。)
public boolean isDegenerate(){
if(this.size() == this.getHeight()){
return true;
}
return false;
}
答案 0 :(得分:4)
好吧,如果你想要更多的递归"解决方案,这个怎么样?
public boolean isDegenerate() {
if (this.left != null) {
if (this.right != null) {
return false; // not degenerate, has two children
} else {
return this.left.isDegenerate();
}
} else {
if (this.right != null) {
return this.right.isDegenerate();
} else {
return true; // we arrived at the bottom without seeing any node with two children
}
}
}