层序遍历(Level-Order Traversal)也称广度优先遍历:从根结点开始,先访问第 1 层所有结点,再访问第 2 层,依次类推,同一层内从左到右。
实现依赖一个队列(FIFO):访问某结点时,将其未访问的孩子按顺序入队,下一轮从队头取结点继续。
void LevelOrder(BiTree T) {
if (!T) return;
Queue Q; InitQueue(&Q);
EnQueue(&Q, T);
while (!QueueEmpty(Q)) {
BiTNode *p = DeQueue(&Q);
visit(p);
if (p->lchild) EnQueue(&Q, p->lchild);
if (p->rchild) EnQueue(&Q, p->rchild);
}
}
| 要点 | 结论 |
|---|---|
| 数据结构 | 队列 |
| 时间复杂度 | $O(n)$ |
| 空间复杂度 | $O(w)$(最大宽度) |
| 本质 | 二叉树上的 BFS |
↑ 以上为站内 HTML 相对链接(纯网页可浏览);本页右上「在 Obsidian 中打开」跳回源笔记。