文章目录
- :heart: 先序遍历:heart:
- :heart: 中序遍历:heart:
- :heart: 后序遍历:heart:
- :heart: 层序遍历:heart:
❤️ 先序遍历❤️
//先序遍历
void PreOrder(BiTree T){
if(T!=null){
visit(T);//访问根结点
PreOrder(T->lchild);//遍历左子树
PreOrder(T->rchild);//遍历右子树
}
}
❤️ 中序遍历❤️
//中序遍历
void PreOrder(BiTree T){
if(T!=null){
PreOrder(T->lchild);//遍历左子树
visit(T);//访问根结点
PreOrder(T->rchild);//遍历右子树
}
}
❤️ 后序遍历❤️
//中序遍历
void PreOrder(BiTree T){
if(T!=null){
PreOrder(T->lchild);//遍历左子树
PreOrder(T->rchild);//遍历右子树
visit(T);//访问根结点
}
}
❤️ 层序遍历❤️
//二叉树的结点
typedef struct BiTNode{
char data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
//链式队列的存储
typedef struct LinkNode{
BiTNode *data;
struct LinkNode *next;
}LinkNode;
//层序遍历
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);//右孩子入队
}
}