其他分享
首页 > 其他分享> > 判断完全二叉树

判断完全二叉树

作者:互联网

判断完全二叉树

一棵深度为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;
}

 

标签:lchild,结点,判断,return,完全,EnQueue,二叉树,rchild
来源: https://blog.csdn.net/qq_37504771/article/details/112000414