如何判断一颗二叉树为完全二叉树
基本思想:
(1)若跟节点非空,则入队。
(2)让p指向队列的对头,若p为NULL,则遍历队列的所有元素,如果出现非空值则返回false,否则返回true
(3)若P非空,则将p的左右孩子入队,然后将P出队(这个地方可以在获取p的时候进行出队也行,另外入队的节点不论空与否都会进入)
(4)重复步骤(2)(3)直到队列为空
(5)结束
算法
1 bool ComBinTree(BinTree BT){ 2 Queue Q; 3 if(BT!=NULL) 4 EnQueue(Q,BT); 5 while(!isEmptyQueue(Q)){ 6 BinTree p=DeQueue(Q); 7 if(p==NULL){ 8 while(!isEmptyQueue(Q)){ 9 if(DeQueue(Q)!=NULL) 10 return false; 11 } 12 return true; 13 }else{ 14 EnQueue(Q,p->lchild); 15 EnQueue(Q,p->rchild); 16 } 17 } 18 return false; 19 }