数据结构笔记——二叉树的层序遍历

目录

一、二叉树的层序遍历

二、代码实现

三、总结

一、二叉树的层序遍历

算法思想:

①初始化一个辅助队列

②根结点入队

③若队列非空,则队头结点出队,访问该结点,将其左右孩子插入队尾(如果有的话)

④重复③直至队列为空

二、代码实现

//层序遍历
void LevelOrder(BiTree T){
    LinkQueue Q;
    InitQueue(Q);    //初始化辅助队列
    BiTree p;
    EnQueue(Q,T);        //将根结点入队
    while(!IsEmpty(Q)){    //队列不空则循环
        DeQueue(Q,p);        //队头结点出队
        visit(p);        //访问出队结点
        if(p->lchild != NULL)
            EnQueue(Q,p->lchild);    //左孩子入队
        if(p->rchild != NULL)
            EnQueue(Q,p->rchild);    //右孩子入队
    }
}

//二叉树的结点(链式存储)
typedef struct BiTNode{
    char data;
    struct BiTNode *lchild,rchild;
}

//链式队列结点
typedef struct LinkNode{
    BiTNode * data;    //存指针而不是结点
    struct LinkNode *next;
}

typedef struct{
    LinkNode *front,*rear;
}LinkQueue;

三、总结

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章