我需要查找二叉树是否是完美的二叉树,这意味着每个节点除了最后一级之外还有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;
}
}
答案 0 :(得分:5)
由于这听起来像“学习练习”,这里有一个提示:
注意:这只是一种方法......但它应该足以让你思考。
@phcoding的评论指出,你的问题实际上可能是“完美搜索树”的替代定义之间的不匹配。您的代码应该在有2^N
个叶节点(正确排列)的情况下工作。
参考:http://en.wikipedia.org/wiki/Binary_tree ...并寻找“完整”,“完整”和“完美”二叉树的定义。