【数据结构之二叉树系列】层序遍历

前言

前面我们学习的几种遍历方式主要有:前序遍历,中序遍历,层序遍历。这几种遍历方式都是采用递归进行实现的,而今天学习的层序遍历采取的是非递归的方式进行实现,主要是迭代的方式进行实现,同时需要使用队列结构进行辅助实现。

层序遍历

层序遍历其实也可以称为广度优先遍历,就是只按照顺序依次往下进行遍历的过程。

层序遍历的思想:利用一个队列结构进行辅助实现,首先判断对应的树是否为空树,如果为空树,则直接返回,如果不为空树,则先将根节点的值入队列,进行循环遍历,当队列不为空时,先取出队头元素,再将队头元素出队列,此时可以先访问取出的队头元素中存储的值,再判断队头元素是否存在左右子树,若存在左子树,则将左子树入队列,若存在右子树,则将右子树入队列。再进行下一轮循环

  • 代码实现
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>

// 树的结构
typedef int TreeDataType;

// 树的结点
typedef struct TreeNode
{
   
   
	TreeDataType val;
	struct TreeNode* left;
	struct TreeNode* right;
};


typedef TreeNode* QDataType;

// 定义队列中结点的结构
typedef struct QueueNode
{
   
   
	QDataType data;
	struct QueueNode* next;
}QueueNode;

typedef struct Queue
{
   
   
	QueueNode* front;
	QueueNode* tail
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值