二叉树的层序遍历

本文介绍了二叉树的层序遍历方法,通过使用顺序循环队列,从根节点开始,按照从上到下、从左到右的顺序访问每个节点。算法首先将根节点入队,然后在队不为空的情况下,出队节点并访问,同时将左右孩子入队。该过程持续到队列为空,实现了每个节点仅被访问一次的目标。
摘要由CSDN通过智能技术生成

二叉树的层序遍历

  1. 描述:对于一棵二叉树,从根结点开始,按从上到下,从左到右的顺序访问每一个结点。每个结点仅仅访问一次。

例题
在这里插入图片描述
层次遍历结果:abfcdgeh

  1. 算法设计思路:使用一个队列
    i.将根结点进队;
    ii.队不为空:从队列中出列一个结点*p,访问它;
    如果它有左孩子结点,将左孩子结点入队;
    如果他有右孩子结点,将右孩子结点进队;

  2. 使用队列类型定义如下:

typedef struct{
BTNode data[MaxSize];//存放队中元素
int front,rear;//队头和队尾指针
}SqQueue;//顺序循环队列类型

4.二叉树层序遍历算法代码实现:

voidLevelOrder(BTNode *b){
BTNode *p;
SqQueue *qu;
InitQueue(qu);//初始化队列
enQueue(qu,b);//根结点指针进入队列
while(!QueueEmpty(qu)){//队不为空,则循环
deQueue(qu,p);//出队结点p
printf("%c",p->data);//访问结点p
if(p->lchild!=NULL) enQueue(qu,p->lchild);//有左孩子时将其进队
if(p->rchild!=NULL) enQueue(qu,p->rchild);//有右孩子时将其进队
}
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值