//判断一个二叉树是不是完全二叉树(借助层序遍历)
int BinaryTreeComplete(BTNode* root){
Queue qu;
BTNode* cur;
int tag = 0;
QueueInit(&qu);
QueuePush(&qu, root);
while (!QueueIsEmpty(&qu)){
cur = QueueTop(&qu);
//putchar(cur->data);
//有右子树没有左子树则不是完全二叉树
if (cur->rchild && !cur->lchild){
return 0;
}
if (cur->lchild){
QueuePush(&qu, cur->lchild);
}
if (tag && (cur->lchild || cur->rchild)){
return 0;
}
if (cur->rchild){
QueuePush(&qu, cur->rchild);
}
else {
//若该节点没有右子树就将该标签置为1
tag = 1;
}
QueuePop(&qu);
}
QueueDestory(&qu);
return 1;
}
判断一个二叉树是不是完全二叉树
最新推荐文章于 2022-10-18 18:37:05 发布