<!-- flowchart 箭头图标 勿删 -->
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
<path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path>
</svg>
<h1><a id="_0"></a>二叉树的层次遍历</h1>
需要用到二叉树和队列两个数据结构,利用队列的先进先出原则。
首先把根节点入队,然后出队的同时把根节点的左右子节点入队(如果有),一直执行直到队列为空。输出的顺序就是按照二叉树的层次输出。
void PrintLevel(Tree T)
{
Queue Q;
Q = CreateQueue(); // 创建一个空队
Enqueue(T, Q); // 把树的根节点入队
while(!IsEmpty(Q)) // 当队列为空结束循环
{
T = FrontAndDequeue(Q); // 出队并且对T赋值
PrintElement(T); // 打印这个节点的元素
// 出队的同时把左右儿子入队(如果有)
if(T->Left != NULL)
Enqueu(T->Left, Q);
if(T->Right != NULL)
Enqueu(T->Right; Q);
}
}