數據結構判斷二叉樹是不是完全二叉樹


算法思想:采用層次遍歷,將所有結點加入隊列(包括空結點)。出隊,遇到空結點時,遍歷隊列,查看是否有非空結點。若有,則不是完全二叉樹,否則是。

代碼如下:

 1 bool IsComplete(BiTree T)  2 {  3     InitQueue(Q);       //初始化隊列
 4     if(!T)         //數為空,則是完全二叉樹
 5         return true;  6     else 
 7  {  8         EnQueue(Q,T);   //將根節點入隊
 9         while(!IsEmpty(Q))  //循環遍歷二叉樹
10  { 11             DeQueue(Q,p);   //出隊
12             if(p)       //如果p非空,則將其左右孩子入隊(不用考慮孩子是否為空)
13  { 14                 EnQueue(Q,p->lchild); 15                 EnQueue(Q,p->rchild); 16  } 17             else     //如果p為空結點,循環遍歷隊列看看是否有非空元素
18  { 19                 while(!IsEmpty(Q)) 20  { 21  DeQueue(Q,p); 22                     if(p)  //如果有非空元素則不是二叉樹
23                         return false; 24  } 25  } 26  } 27         return true; 28  } 29 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM