C 二叉树的层序遍历

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010095372/article/details/83443211

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

//层序遍历
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;
    }
}

猜你喜欢

转载自blog.csdn.net/u010095372/article/details/83443211