題目:二叉樹採用二叉鏈表存儲結構,寫出判別給定二叉樹是否是完全二叉樹的算法
算法思想:採用層次遍歷的算法,將所有的結點加入隊列Queue(包括空結點)。當遇見空結點時,查看後面是否有節點。若有,則該二叉樹不是完全二叉樹。
在這裏插入代碼片
Bool iscomplete(Bitree T){ //本算法判斷二叉樹是否爲完全二叉樹
initQueue(Q); //初始化一個隊列
If(!T) return ;
Else{
EnQueue(Q,T); //將二叉樹的節點進隊列
While(!empty(Q)){ //當含有二叉樹結點的隊列不爲空時
DeQueue(Q,p); //將p所指結點出隊列Q
If(p){ //如果二叉樹中指針p所指節點存在
EnQueue(Q,p->lchild);
EnQueue(Q,p->rchild); //繼續將P指針的左右孩子入隊列
}
Else{ //p所指結點爲空
While(!empty(Q)){
DeQueue(Q,p);
If(p) Return 0; //結點p所指結點爲空,其後存在非空節點,則不是完全二叉樹
}
}
}
}