真题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所指结点为空,其后存在非空节点,则不是完全二叉树
				}
			}  
		}     
	}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章