- 博客(11)
- 收藏
- 关注
原创 二叉搜索树
本文围绕二叉搜索树展开,其作为平衡树、红黑树的基础,核心性质为左子树节点值均小于根节点、右子树均大于根节点,中序遍历可获有序序列,支持高效二分查找。文中采用递归简化逻辑,实现了节点插入、树高计算、中序遍历、元素查找等核心接口,同时完成树结构封装与内存释放。代码分为头文件(定义结构体与接口)、源文件(实现操作逻辑)及测试用例,通过实例数据验证了有序序列输出、树高统计及查找功能的有效性,清晰呈现了二叉搜索树的动态结构特性与实现要点,为后续进阶树结构学习筑牢基础。
2025-11-05 22:36:20
27
原创 线索化二叉树——入门
这篇博客是线索化二叉树的入门教程,聚焦中序线索化实现。先点明二叉链表存在n+1个空指针域的问题,引出线索化思路,即利用空指针存储遍历的前驱/后继节点。接着介绍核心的Tag标识符,用0/1区分指针指向子树还是线索。重点讲解中序线索化实现,通过递归遍历结合prev指针记录前驱,完成空指针线索化;还说明线索化后的线性遍历逻辑,以及释放线索化二叉树的特殊处理。最后提供完整C语言代码,含头文件、接口实现和测试文件,帮助读者实操理解。
2025-10-20 19:01:58
860
原创 深度/广度 遍历二叉树的实现
本文围绕二叉树遍历展开,介绍了前序、中序、后序(深度遍历)和层序(广度遍历)四种方式,核心差异在于访问根节点的时机。递归实现简洁,依托系统栈完成 “递” 与 “归”;非递归需显式用栈(深度)或队列(层序)模拟,是理解递归本质的关键。理解的核心在于动态模拟:清晰构建遍历过程,明确访问时机、路径及回溯逻辑。通过刻意模拟、反复推演,可将遍历步骤内化为思维程序。这四种遍历是学习复杂二叉树(如平衡树、红黑树)的基础,掌握非递归实现能彻底突破递归理解障碍。
2025-07-17 23:22:05
971
原创 树、二叉树存储、遍历的概念
本文将二叉树比作 “程序员的族谱管理术”,介绍其作为高效数据结构在快速查找等场景中的重要性。内容涵盖树的定义、节点分类及关系,三种存储结构(双亲、孩子、孩子兄弟表示法),二叉树的类型(满二叉树、完全二叉树)与性质,存储方式(顺序、链式),以及前中后序遍历逻辑。通过两道遍历反推树结构的例题,展现二叉树在算法中的应用,是理解数据结构与应对面试的核心内容。
2025-07-06 15:57:41
1809
原创 队列——顺序队列和链式队列
队列是一种遵循先进先出(FIFO)原则的线性表,仅允许在队尾插入、队头删除。其核心体现在缓冲协调(平衡速度差异)、延时任务管理(如订单超时处理)、多线程协作(阻塞队列)及LRU缓存淘汰等场景。顺序队列用数组实现,存在“假溢出”问题,通过循环队列解决,牺牲一个存储单元以(rear+1)%MAX_SIZE==front判断队满,front==rear判队空。链式队列基于链表,动态分配内存,无溢出风险,入队时尾插新节点,出队删除队头节点并释放内存,通过front和rear指针维护队列状态,适用于长度不确定的场景。
2025-06-30 21:43:19
2220
原创 栈、顺序栈与链式栈
栈是遵循后进先出(LIFO)原则的特殊线性表,仅允许在栈顶进行插入(压栈)和删除(出栈)操作,核心用于临时存储与回溯。其应用广泛,如浏览器后退、函数调用栈、括号匹配等。顺序栈用数组实现,有固定大小,可能溢出或浪费空间;链式栈基于链表,可动态扩容,通过头插法实现压栈,删除栈顶节点实现出栈。两者本质区别在于存储结构,顺序栈简单高效但大小受限,链式栈灵活但开销略大。
2025-06-27 00:25:14
1096
原创 双向循环链表
摘要:本文介绍了双向循环链表的原理与实现。相较于单向链表,双向循环链表通过前驱和后继指针实现高效增删操作,无需辅助节点。文章详细解析了链表结构、节点定义(含表头),并以图文结合的方式演示了插入和删除的核心操作流程(四步插入法、三步删除法)。代码实现包含初始化、头插/尾插、删除、遍历及释放等完整接口,提供可运行示例验证功能。该结构适用于需要双向遍历的场景,操作效率显著提升。
2025-06-21 00:31:51
1150
原创 单向链表的基本操作及实现(.c)
本文围绕单向链表的基本操作与实现展开,系统讲解链表核心原理与代码实现。首先剖析指针与结构体在链表中的协作机制,强调理解指针本质的三个关键点:指针存储地址、解引用访问内存、明确结果类型。通过对比顺序表,突出链表动态伸缩与插入删除的效率优势。详细阐述带头节点的单向链表结构设计,深入解析插入、删除操作的核心逻辑。完整代码示例覆盖链表的创建、头插、定位插入、按值删除、显示及释放功能,并给出测试流程。读者可通过本文掌握链表操作精髓,理解指针在复杂数据结构中的应用方式,为后续学习高级数据结构筑牢基础。
2025-06-08 14:38:04
1352
原创 数据结构——顺序表的实现(.C)
顺序表是线性表的一种,它采用连续的存储单元依次存储线性表的数据元素。在本项目中,顺序表通过动态数组实现,其数据存储在堆内存中,表头结构体记录了数据空间的首地址、当前数据个数以及最大存储容量。
2025-06-03 18:18:15
2198
原创 数据结构概述、顺序存储表
元素和元素的逻辑关系1.线性逻辑元素与元素之间存在1 : 1的关系;2.非线性结构层级关系(树状关系)元素与元素之间存在1 : n的关系;图集关系假设运动会田径比赛项目有:A(跳高)、B(跳远)、C(标枪)、D(铅球)、E(100m跑)、F(200m跑)。参赛选手的项目表,如下表所列:问如何安排比赛时间,才能使得:(1)每个比赛项目都能顺利进行(无冲突);(2)尽可能缩短比赛时间。元素与元素之间存在m : n的关系;
2025-05-28 21:29:07
927
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅