如何判断一颗二叉树为完全二叉树

基本思想:

(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 }

posted on 2012-05-23 16:33  为梦飞翔  阅读(654)  评论(0编辑  收藏  举报

导航