二叉树的层序遍历

利用队列的先进先出,把根的节点的指针存到队列中,然后再出队列,在出队列时再把他的左右子树的节点指针带进去,循环到队列为空(树也就遍历完了)
二叉树的层序遍历_第1张图片

void LevelOrder(BTNode* root)//层序遍历
{
	Queue L;//定义一个队列的变量
	QueueInit(&L);//初始化队列
	if (root)
	{
		QueuePush(&L, root);//把根节点的指针存入到队列中
	}
	while (!QueueEmpty(&L))
	{
		BTNode* front = QueueFront(&L);//把队列的头元素去出来,定义一个变量接收
		printf("%d ",front->val);//打印头元素指针指向的那个节点的值
		QueueBack(&L);
		if (front->left)
		{
			QueuePush(&L, front->left);
		}
		if (front->right)
		{
			QueuePush(&L, front->right);
		}
	}
	printf("\n");
}

你可能感兴趣的:(数据结构)