欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C 二叉树的层序遍历

程序员文章站 2024-03-22 18:52:10
...

先序中序后序什么的都好说,但是层序遍历费点劲,但也还行
之前二叉树基本操作在这里
层序遍历就相当于,根节点先进来,再把子节点再都放进来,根节点出去,子节点再将它们的子节点再放进来,它们再出去。就是这样,其实就是个顺序队列,先进先出。
代码如下

//层序遍历
void putout4(BiThrTree T){
    //先定个大数组,就像是用数组形式定了二叉树的存储结构
    BiThrTree q[100];
    q[0] = T;
    //front就是要输出的游标,rear是新进来点存储的游标
    int front = 0;
    int rear = 1;
    //rear就比front大,说明数组里面还有没输出的节点
    while (front < rear) {
        //我front按部就班地往后走,每次加一
        printf("%c ", q[front]->data);
        //只要树节点有左孩子节点那么rear就加1
        if (q[front]->LeftTreeNode) {
            q[rear++] = q[front]->LeftTreeNode;
        }
        //只要树节点有右孩子节点那么rear就加1
        if (q[front]->RightTreeNode) {
            q[rear++] = q[front]->RightTreeNode;
        }
        //继续往后走
        ++front;
    }
}