采用层次遍历算法,将所有节点加入队列中(包括空节点)。遇到空节点时,查看其后是否有非空节点。若有,则二叉树不是完全二叉树。
bool IsComplete(BiTree T){
InitQueue(Q);
if(!T) return 1;
EnQueue(Q,T);
while(!IsEmpty(Q)){
DeQueue(Q,p);
if(p){
EnQueue(Q,p->lchild);
EnQUeue(Q,p->rchild);
}
else{
while(!IsEmpty(Q)){ //空节点之后如果出现非空节点则该树不是完全二叉树。
DeQueue(Q,p);
if(p) return 0;
}
}
}
return 1;
}
本文介绍了一种通过层次遍历算法判断二叉树是否为完全二叉树的方法。核心思路是利用队列进行节点存储,遇到空节点检查后续节点状态,确保在遇到第一个空节点后不再出现非空节点。
726

被折叠的 条评论
为什么被折叠?



