0
点赞
收藏
分享

微信扫一扫

05(数据结构考研)树相关操作代码


文章目录

  • ​​: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);//右孩子入队
}
}


举报

相关推荐

0 条评论