0

我需要确定二叉树是否是完美的二叉树,这意味着每个节点除了最后一层之外还有 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;
    }
}
4

1 回答 1

5

因为这听起来像是“学习练习”,所以这里有一个提示:

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

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


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

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

于 2013-03-31T00:02:00.567 回答