c//c++二叉树的层序遍历

  • 层序遍历即从一棵树的每一层由上到下开始依次从左到右遍历输出
  • 从上面一句话的原理不难看出这就是一个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);
        }
    }
}
点赞