数据结构判断二叉树是不是完全二叉树
作者:互联网
算法思想:采用层次遍历,将所有结点加入队列(包括空结点)。出队,遇到空结点时,遍历队列,查看是否有非空结点。若有,则不是完全二叉树,否则是。
代码如下:
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