其他分享
首页 > 其他分享> > 数据结构判断二叉树是不是完全二叉树

数据结构判断二叉树是不是完全二叉树

作者:互联网

算法思想:采用层次遍历,将所有结点加入队列(包括空结点)。出队,遇到空结点时,遍历队列,查看是否有非空结点。若有,则不是完全二叉树,否则是。

代码如下:

 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 }

 

标签:非空,遍历,return,队列,是不是,结点,二叉树,数据结构
来源: https://www.cnblogs.com/lcy-4/p/15411206.html