查找二叉搜索树是否完美?

时间:2013-03-30 23:46:48

标签: java algorithm binary-search-tree

我需要查找二叉树是否是完美的二叉树,这意味着每个节点除了最后一级之外还有2个节点。这些是我到目前为止的方法,但它似乎没有工作,我几乎坚持找到它。有什么想法吗?

private boolean isPerfect(BinaryNode<AnyType> t){

    int sizeTree = size(t);

    double num =  Math.log(sizeTree+1)/Math.log(2);  

    int checkNum = (int) (Math.floor(num));

    if(num - checkNum == 0)
        return true;
    else{
        return false;
    }
}

1 个答案:

答案 0 :(得分:5)

由于这听起来像“学习练习”,这里有一个提示:

  • 比较最小和最大树节点深度。

注意:这只是一种方法......但它应该足以让你思考。


@phcoding的评论指出,你的问题实际上可能是“完美搜索树”的替代定义之间的不匹配。您的代码应该在有2^N个叶节点(正确排列)的情况下工作。

参考:http://en.wikipedia.org/wiki/Binary_tree ...并寻找“完整”,“完整”和“完美”二叉树的定义。