检查二进制搜索树是否退化

时间:2015-11-04 07:06:56

标签: java recursion binary-search-tree

我想检查一下二元搜索树是否退化(它是一个链表还是一棵树?)我已经尝试了一段时间并且没有提出任何有效的方法。我确实提出了一个非递归的解决方案,我认为它非常聪明,但规范说明它必须是一个递归解决方案,并且我已经将它从非递归转换为递归。

这是我的非递归解决方案(实际上并不是因为大小和高度都是递归实现的。但是这种方法不是。)

public boolean isDegenerate(){
        if(this.size() == this.getHeight()){
            return true;
        }
        return false;
    }

1 个答案:

答案 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
        }
    }
}