- 层序遍历即从一棵树的每一层由上到下开始依次从左到右遍历输出
- 从上面一句话的原理不难看出这就是一个FIFO算法,也就是一个基本的先进先出队列,因此我们考虑调用STL的queue
数据结构:
typedef struct BiTNode {
ElemType data;
struct BiTNode *lchild, *rchild;
} Node, *Tree;
算法:
void LevelOrderTraverse(Tree T, void (*Visit)(ElemType e)) {
queue<Tree> Q;
if (T) {
Q.push(T);
while (!Q.empty()) {
Tree tmp = Q.front();
Q.pop();
Visit(tmp->data);
if (tmp->lchild)
Q.push(tmp->lchild);
if(tmp->rchild)
Q.push(tmp->rchild);
}
}
}