目录
1 什么是层序遍历
比方说这颗二叉树:
前序遍历:
层序遍历:
2 二叉树层序遍历的基本思路
3 二叉树层序遍历的实现
//层序遍历
void TreeLevelOrder(BTNode* proot)
{
QU qu; // 创建队列
QInit(&qu); // 队列初始化
if (proot == NULL) // 判空
{
return;
}
else
{
QPush(&qu, proot); // 二叉树不是空就先把第一个值入队
}
while (!QEmpty(&qu)) // 只要队列不是空就一直循环,直到队列为空
{
QDataType tmp = QFront(&qu); // 取队头
QPop(&qu); // 队头元素出队
if (tmp->leftnode != NULL) // 取队头的子节点入队(除非子节点为空)
{
QPush(&qu, tmp->leftnode);
}
if (tmp->rightnode != NULL)
{
QPush(&qu, tmp->rightnode);
}
printf("%d ", tmp->val); // 打印出队的节点的值(视情况加或不加)
}
QDestroy(&qu); // 别忘了销毁堆列
}