二叉树层序遍历的实现(C语言)

15 篇文章 0 订阅
订阅专栏

层序遍历的简单介绍

层序遍历:从所在二叉树的根节点出发,先访问第一层根节点,然后从左向右访问第二层的节点,接着第三层,以此类推。
简单的说:自上而下,自左向右。

层序遍历的访问步骤

层序遍历的实现

层序遍历的接口实现要使用队列的相关知识, 队列相关知识的博客链接

思路分析+画图

思路:
1.如果根节点不为空,先把根节点push到队列
2.取出队头节点,按照顺序把左孩子和右孩子节点push到队列。
3.继续上面步骤,取出队头节点,把其孩子节点push到队列

解析步骤

接口实现

//层序遍历
void LevelOrder(BTNode* root)
{
	Queue q;
	QueueInit(&q);

	//判断根节点是否为空,如果为空不入队列,则此时队列为空,也不会执行下面的循环
	if (root)
		QueuePush(&q, root);

	//持续这个循环,循环结束层序遍历结束
	while (!QueueEmpty(&q))
	{
		//取队头
		BTNode* front = QueueFront(&q);
		QueuePop(&q);
		//打印对头数据
		printf("%d ", front->data);

		//如果队头的左、右孩子存在,push到队列
		if (front->left)
			QueuePush(&q, front->left);
		if (front->right)
			QueuePush(&q, front->right);
	}

	QueueDestroy(&q);
}

注意:程序的出口一定要销毁队列,防止内存泄漏

总结

  1. DFS:深度优先遍历,在二叉树中先序遍历可以称为深度优先遍历。—— 一般使用递归。如果要求低一些,中序和后序遍历也可以称为深度优先遍历。
  2. BFS:广度优先遍历,在二叉树中层序遍历可以称为广度优先遍历。——一般使用队列。
二叉树非递归遍历在C语言中通常通过栈(或队列实现层序遍历)来实现
08-27
二叉树非递归遍历在C语言中通常通过栈(或队列实现层序遍历)来实现。对于前序、中序或后序遍历,可以使用栈来模拟递归调用的过程,手动维护节点访问的顺序。通过不断将节点压栈并在适当时候出栈访问,实现非递归...
二叉树遍历_C语言_
09-30
在这个场景中,我们关注的是使用C语言实现二叉树的遍历,包括先序遍历、中序遍历和后序遍历,以及非递归的中序遍历。这些遍历方法是理解二叉树特性和操作的关键。 1. **先序遍历**:先序遍历的顺序是根节点 -> 左...
二叉树的遍历(C语言实现
01-08
本篇将详细介绍如何用C语言实现二叉树的递归与非递归遍历,以及如何计算节点数、树的深度和宽度。 首先,我们来看二叉树的递归遍历,主要包括前序遍历、中序遍历和后序遍历: 1. **前序遍历**:先访问根节点,然后...
二叉树4种遍历方法的C语言实现
11-09
本主题将详细介绍四种二叉树遍历方法的C语言实现:前序遍历、中序遍历、后序遍历以及层序遍历。 1. **前序遍历**: 前序遍历的顺序是根节点 -> 左子树 -> 右子树。在C语言中,我们可以递归地实现这个过程: - ...
c语言leetcode题解之第102题二叉树的层序遍历.zip
07-12
c c语言leetcode题解之第102题二叉树的层序遍历.zip
c++STL——map与set的使用及介绍
qq_58761784的博客
10-16 1033
在上一期博客中,我们介绍了二叉搜索树的结构及使用,也了解到了二叉搜索树的结构虽然在大部分情况下搜索的速度非常快,但是它的时间复杂度最终还是由数据的插入顺序决定,所以我们要学习另一种结构——平衡二叉树,平衡二叉树的本质还是二叉搜索树,但是它解决了二叉搜索树时间复杂度由插入顺序决定的问题,所以它的时间复杂度达到了log(N),对于这样一种高效的数据结构是不是得掌握它呢。我们来看文档中关于set的介绍:翻译:1. set是按照一定次序存储元素的容器。
代码随想录刷题学习日记
weixin_73939095的博客
10-23 787
二叉树理论基础学习 二叉树的递归遍历学习 144.二叉树的前序遍历 94.二叉树的中序遍历 145.二叉树的后序遍历
数据结构 - 树,再探
IT规划师
10-20 625
文章介绍了二叉树、N叉树及其性质,包括满二叉树、完全二叉树、二叉搜索树、平衡二叉树等,并讨论了它们的存储结构,包括顺序存储和链式存储,链式存储更适合大多数树。
【Redis】数据结构(下)
2301_78320637的博客
10-20 889
是一个节点为ZipList的双端链表节点采用了ZipList,解决了传统链表的内存占用问题控制ZipList的大小,解决连续内存空间申请效率的问题中间节点可以压缩,进一步节省内存跳表是一个双向链表,每个节点都会包含一个score(用于排序)和ele(真实数据)值节点按照score值排序,score值一样则按照ele字典进行排序每个节点都可以包含多层指针,层数是1~32之间的随机数不同层指针到下一个节点的跨度不同,层级越高,跨度越大增删查改的效率和红黑树基本一致,实现却很简单。
数据结构】二叉树遍历(前序/中序/后序/层序-递归与非递归)
金哥的博客
10-23 705
数据结构:二叉树遍历(前序/中序/后序/层序-递归与非递归)
实现“顺序结构二叉树”
最新发布
2402_83250773的博客
10-23 605
顺序结构二叉树
七大经典排序算法优化:插入排序、希尔排序、选择排序、冒泡排序、堆排序、快速排序、归并排序代码详解
weixin_64593595的博客
10-15 1818
本文深入探讨了七大经典排序算法的优化:插入排序、希尔排序、选择排序、冒泡排序、堆排序、快速排序和归并排序。适合需要稳定性排序的场景,通过对这些算法的分析和优化,能够根据具体需求选择合适的排序方法,从而提高程序性能和效率。
手撕数据结构 —— 堆(C语言讲解)
知其然 知其所以然
10-17 889
想要弄清楚什么是堆,首先需要了解二叉树的相关知识,推荐阅读数据结构——树和二叉树简介。大根堆:如果一棵完全二叉树中除了叶子结点的每个结点的值都大于其左右孩子,则这棵完全二叉树就叫做大根堆。大根堆的对顶元素是这棵树中的最大元素。小根堆:如果一棵完全二叉树中除了叶子结点的每个结点的值都小于其左右孩子,则这棵完全二叉树就叫做小根堆。小根堆的堆顶元素是整棵树的最小元素。a指向底层的数组空间。size记录有效数据的个数。capacity记录空间的大小,当空间不够时自动扩容。
神奇的数据结构 —— 跳表
m0_52796585的博客
10-21 805
神奇的数据结构——跳表》在计算机科学的广阔领域中,有一种独特而高效的数据结构——跳表。跳表,全称为跳跃表,是一种可以替代平衡树的数据结构。它的诞生为解决特定的数据存储和检索问题提供了一种新颖而有效的方法。从结构上看,跳表是在有序链表的基础上增加了多层索引。这就像是为一个庞大的图书馆建立了不同层次的目录系统。最底层是完整的有序链表,包含了所有的数据元素。而每一层的索引则是对下一层链表的部分节点进行跳跃式的引用,通过这种方式,在查找数据时可以实现快速的跳跃前进,大大减少了比较的次数。
23.Redis核心数据结构
Csdn_xzh的博客
10-23 467
字符串常规操作备注应用场景存入字符转键值对单值缓存、对象缓存批量存储字符串键值对对象缓存存入一个不存在的键值对分布式锁GET KEY获取一个字符串键值批量获取字符串值删除键设置一个键的过期时间原子加减INCR key将key中存储的数字值加1阅读量、登录统计DECR key将key中存储的数字值减1将key中存储的数字值加上increment分布式全局序列号将key中存储的数字值减去decrement。
考研篇——数据结构王道3.2.3_队列的链式实现
m0_74328241的博客
10-23 110
链式存储实现的队列一般不存在队满的情况,除非内存不足。在书写代码时,思考不带头结点与带头节点在操作上的区别,是否单独处理要分情况。
20240818 字节跳动 笔试
lc_guo的博客
10-22 1155
BSP驱动开发工程师-OS、4 道编程题
Redis学习笔记(五)--Redis底层数据结构之简单动态字符串SDS
Scr1Pt的博客
10-20 1137
本文介绍了Redis底层的数据结构简单动态字符串SDS的原理,为作者在学习Rdis时的笔记,特此比记录,以便后续学习中能够查漏补缺。
Redis内部数据结构ziplist详解
helloworld工程师的博客
10-23 395
Redis官方对于ziplist的定义是(出自ziplist.c的文件头部注释):翻译一下就是说:ziplist是一个经过特殊编码的双向链表,它的设计目标就是为了提高存储效率。ziplist可以用于存储字符串或整数,其中整数是按真正的二进制表示进行编码的,而不是编码成字符串序列。它能以O(1)的时间复杂度在表的两端提供push和pop操作。实际上,ziplist充分体现了Redis对于存储效率的追求。一个普通的双向链表,链表中每一项都占用独立的一块内存,各项之间用地址指针(或引用)连接起来。
写文章

热门文章

  • 进程控制(Linux) 2329
  • 单链表经典题目总结(C语言) 1671
  • stl_list类(使用+实现)(C++) 1494
  • set和map + multiset和multimap(使用+封装(RBTree)) 1408
  • 二叉搜索树(C++) 1275

分类专栏

  • C++ 22篇
  • Linux 13篇
  • C 11篇
  • C语言数据结构 15篇

最新评论

  • 进程间通信——IPC(Linux)

    电力电子空间: 这真是一篇高质量的好文,深度理解和清晰的表达方式使复杂的技术概念变得容易理解,值得收藏点赞。博主用心很有耐心,更有对知识的热忱和热爱,写了这么实用有效的分享,期盼博主能够光顾我的博客,给予宝贵的指导!

  • 进程控制(Linux)

    CSDN-Ada助手: 推荐 CS入门 技能树:https://edu.csdn.net/skill/gml?utm_source=AI_act_gml

  • 进程控制(Linux)

    白话机器学习: 博主的文章细节很到位,兼顾实用性和可操作性,感谢博主的分享,期待博主持续带来更多好文

  • 使用c语言实现扫雷(容易版本)

    CSDN-Ada助手: 哇, 你的文章质量真不错,值得学习!不过这么高质量的文章, 还值得进一步提升, 以下的改进点你可以参考下: (1)增加除了各种控件外,文章正文的字数;(2)增加条理清晰的目录。

最新文章

  • 线程(Linux)
  • 信号(Linux)
  • 进程间通信——IPC(Linux)
2024年9篇
2023年49篇
2022年4篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kpl_20

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值

玻璃钢生产厂家贵溪玻璃钢伟人像雕塑唐山哪里有卖玻璃钢花盆玻璃钢户外绿地雕塑庆阳玻璃钢动物雕塑玻璃钢景观雕塑定制济南艺术商场美陈江西玻璃钢小品雕塑施工厂家龙泉玻璃钢雕塑联系方式河源人物玻璃钢动物雕塑玻璃钢剪纸雕塑怎样制作保定玻璃钢动物雕塑价格哪个公司的玻璃钢雕塑北京主题商场美陈订购户外玻璃钢雕塑制作福建景区玻璃钢雕塑批发玻璃钢圣诞老人卡通雕塑功能性的玻璃钢雕塑靖宇玻璃钢雕塑厂家吉安玻璃钢抽象雕塑玻璃钢雕塑的制作开封不锈钢玻璃钢卡通雕塑加工节庆商场美陈销售广安玻璃钢海豚雕塑厂家革命主题玻璃钢卡通雕塑图片哈尔滨清远玻璃钢动物雕塑深圳玻璃钢蝴蝶柱雕塑好用的玻璃钢雕塑厂商场美陈产品遵义商场美陈效果图拉萨玻璃钢造型雕塑香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化