树的层次遍历

1. 概述:

二叉树遍历的核心问题:二维结构的线性化

2. 层次遍历:

1) 队列实现:遍历从根节点开始, 首先将根结点入队,然后开始执行循环:结点出队、访问该结点、其左右儿子入队。


3. 层序基本过程:先根结点入队,然后:

1) 从队列中取出一个元素;

2) 访问该元素所指结点;

3) 若该元素所指结点的左、右孩子结点非空,则将其左、右孩子的指针入队

void LevelOrderTraversal(BinTree BT)
{
	Queue Q;
	BinTree T;
	if(!BT)
	{
		return;/*若是空树则直接返回*/
	}
	Q = CreateQueue(MaxSize);/*创建并初始化队列Q*/
	AddQ(Q, BT);

	while(!IsEmptyQ(Q))
	{
		T = DeleteQ(Q);
		printf("%d\n", T->Data);
		if(T->Left)	AddQ(Q, T->Left);
		if(T->Right) AddQ(Q, T->Right);
	}
}



你可能感兴趣的:(树的层次遍历)