二叉树层序遍历

层序遍历的实现需要借助一个辅助队列
首先将根结点入队,然后根出队,把根的两个子树入队
然后下面循环执行:队头元素出队,队头元素的左右子树入队

举例如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
后面都是一样的,以此类推…

代码实现:

//层次遍历
void LevelOrder(BiTNode T) {
	SqQueue Q;
	InitQueue(&Q);//初始化一个辅助队列
	BiTree p;
	EnQueue(&Q,T)//根结点入队
	while(!isEmpty(Q)){
		DeQueue(Q,p);//队头元素出队,用p记录出队列的结点
		visit(p);//访问出队结点
		if(p->lchild!=NULL){
			EnQueue(Q,p->lchild);//左子树不空,左子树入队
		}
		if(p->rchild!=NULL){
			EnQueue(Q,p->rchild);//右子树不空,右子树入队
		}
	}
}

你可能感兴趣的:(数据结构代码汇总,二叉树层序遍历)