真題2013 判斷二叉樹是否爲完全二叉樹

題目:二叉樹採用二叉鏈表存儲結構,寫出判別給定二叉樹是否是完全二叉樹的算法
算法思想:採用層次遍歷的算法,將所有的結點加入隊列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所指結點爲空,其後存在非空節點,則不是完全二叉樹
				}
			}  
		}     
	}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章