int JudgeComplete(BiTree bt) //判斷二叉樹是否是完全二叉樹,如是,返回1,否則,返回0
{int tag=0; BiTree p=bt, Q[]; // Q是佇列,元素是二叉樹結點指標,容量足夠大
if(p==null) return (1);
QueueInit(Q); QueueIn(Q,p); //初始化佇列,根結點指標入隊
while (!QueueEmpty(Q))
{p=QueueOut(Q); //出隊
if (p->lchild && !tag) QueueIn(Q,p->lchild); //左子女入隊
else {if (p->lchild) return 0; //前邊已有結點為空,本結點不空
else tag=1; //首次出現結點為空
if (p->rchild && !tag) QueueIn(Q,p->rchild); //右子女入隊
else if (p->rchild) return 0; else tag=1;
} //while
return 1; } //JudgeComplete
int JudgeComplete(BiTree bt) //判斷二叉樹是否是完全二叉樹,如是,返回1,否則,返回0
{int tag=0; BiTree p=bt, Q[]; // Q是佇列,元素是二叉樹結點指標,容量足夠大
if(p==null) return (1);
QueueInit(Q); QueueIn(Q,p); //初始化佇列,根結點指標入隊
while (!QueueEmpty(Q))
{p=QueueOut(Q); //出隊
if (p->lchild && !tag) QueueIn(Q,p->lchild); //左子女入隊
else {if (p->lchild) return 0; //前邊已有結點為空,本結點不空
else tag=1; //首次出現結點為空
if (p->rchild && !tag) QueueIn(Q,p->rchild); //右子女入隊
else if (p->rchild) return 0; else tag=1;
} //while
return 1; } //JudgeComplete