判断完全二叉树

判断完全二叉树

一棵深度为k的有n个结点的二叉树,对树中的结点按从上至下、从左到右的顺序进行编号,如果编号为i(1≤i≤n)的结点与满二叉树中编号为i的结点在二叉树中的位置相同,则这棵二叉树称为完全二叉树

基于层序遍历的思想,判断每层遍历结束后,取出队列中的结点,判断该层的结点是否还有子结点,则为非完全二叉树。整颗树遍历结束后如果没有上述情况则为完全为二叉树。

bool IsCompelete(BiTree T){
	if(!T){
		return true;
	}
	InitQueue(Q);
	BiTNode *p = T;
	EnQueue(Q,p);
	while(!IsEmpty(Q)){
		DeQueue(Q,p);
		if(p->lchild){
			EnQueue(Q,p->lchild);
		}
		if(p->rchild){
			EnQueue(Q,p->rchild);
		}
		else if(!p->lchild && !p->rchild)
			DeQueue(Q,p);
			if(p->lchild || p->rchild)
				return false;
	}
	return true;
}

 

上一篇:黄聪:C#图片处理封装类(裁剪、缩放、清晰度、加水印、生成缩略图)有示例(转)


下一篇:数据结构_二叉树