- 博客(52)
- 收藏
- 关注
原创 极差不超过定值的最长子数组—滑动窗口+deque线性优化
本文探讨了如何寻找最长连续子数组,使得其任意两元素绝对差不超过给定限制值limit。通过将问题转化为维护滑动窗口内的极差,提出了基于双端队列(deque)的高效算法。算法使用两个单调队列分别动态维护窗口的最大值和最小值,确保极差始终≤limit。左指针在窗口不合法时移动,右指针逐步扩展窗口,时间复杂度为O(n)。该解法是滑动窗口与单调队列结合的经典应用,适用于各类动态数据统计问题。
2026-07-25 16:16:06
222
原创 基于Cache替换算法的LRU缓存实现
LRU(最近最少使用)是一种缓存替换算法,通过淘汰最久未使用的数据来管理有限缓存空间。本文介绍了LRU缓存的实现方法:结合双向链表和哈希表,前者维护数据访问顺序(最近访问移至头部),后者提供O(1)的快速查找。具体实现中,get操作通过哈希表定位数据并调整链表位置;put操作更新或新增数据,若缓存满则删除尾部最久未用数据。这种结构完美平衡了快速访问和时序维护的需求,时间复杂度均为O(1),被广泛应用于多级存储系统中。
2026-07-18 15:32:00
251
原创 快速选择算法求解TopK:基于快排的思维跃迁
本文介绍了快速选择算法用于高效求解数组中第k大元素的问题。该算法基于快速排序思想,通过选择基准值将数组分区,仅递归处理包含目标的那一侧,将时间复杂度优化至O(n)。文章详细阐述了算法原理、图解过程和代码实现,重点说明了升序分区策略和递归终止条件,并指出该算法在数据量大时相比排序和堆方法更具优势,适用于数据库、机器学习等大规模数据处理场景。
2026-07-11 16:34:42
203
原创 全排列—回溯剪枝的决策树艺术
本文介绍了解决包含重复数字的全排列问题的回溯剪枝算法。核心思路是:1) 先排序数组使相同元素相邻;2) 通过回溯构建决策树生成所有排列;3) 关键剪枝策略要求相同元素必须按数组原始顺序选取以避免重复排列。文章详细解析了算法实现,包括排序预处理、回溯搜索过程以及visited数组标记已用元素的剪枝条件。该方法通过固定重复元素的选取顺序实现高效去重,掌握这一排序+回溯+剪枝的方法论可推广解决各类排列组合问题。
2026-07-05 18:24:06
432
原创 二维前缀DP求解矩阵区域和
本文介绍了利用二维前缀和求解矩阵区域和问题的方法。给定m×n矩阵mat和整数k,需要为每个位置(i,j)计算以它为中心、边长为2k+1的正方形区域元素和(边界超出时截断)。解法核心是构建前缀和矩阵dp,其中dp[i][j]表示从(0,0)到(i-1,j-1)的矩形和,通过容斥原理递推计算:dp[i][j] = dp[i-1][j] + dp[i][j-1] - dp[i-1][j-1] + mat[i-1][j-1]。查询时再次应用容斥原理,用四个前缀和O(1)求出目标区域和。
2026-06-27 17:09:34
262
原创 最长重复子串:哈希+二分优化算法
本文介绍了求解字符串中最长重复子串的两种方法。暴力枚举法通过双重循环检查所有子串,时间复杂度为O(n^3),效率较低。优化方法采用哈希+二分策略:利用重复子串长度的单调性进行二分查找,每次检查时用哈希集合存储指定长度的所有子串,若发现重复即返回。该方法将时间复杂度优化至O(NlogN),是处理此类字符串问题的有效方案。文章详细说明了两种方法的实现步骤和复杂度分析,突出了哈希+二分算法在效率上的显著优势。
2026-06-21 15:47:15
180
原创 深入剖析B树系列—MySQL索引背后的外查找大师
本文系统介绍了B树及其变种B+、B*树、B树的原理与实现。B树是一种多路平衡搜索树,通过降低树高减少磁盘I/O次数,适用于海量数据存储场景。文章详细解析了B树的节点结构、查找算法和插入操作,重点阐述了插入时的分裂机制。B+树在B树基础上优化,将数据集中在叶子节点并形成链表,提升范围查询效率;B树通过提高节点填充率进一步优化空间利用率。最后探讨了B树系列在MySQL索引中的应用,对比了MyISAM和InnoDB存储引擎的索引实现差异。
2026-06-14 13:36:43
336
原创 图的高阶算法:从构造最小生成树到求解最短路径问题
本文系统介绍了图论中的两类核心算法:最小生成树和最短路径算法。最小生成树部分详细解析了Kruskal算法(基于全局贪心策略,使用并查集检测环路)和Prim算法(基于局部贪心策略,逐步扩展生成树)的实现原理和代码实现。最短路径部分深入剖析了三种典型算法:Dijkstra算法(处理非负权图的单源最短路径)、Bellman-Ford算法(支持负权边检测的单源最短路径)以及Floyd-Warshall算法(动态规划解决多源最短路径问题),分别阐述了它们的适用场景、核心思想和具体实现。
2026-06-06 16:33:40
247
原创 MySQL进阶:吃透表的CURD操作&深入理解索引
本文系统介绍了MySQL数据库表的增删改查(CURD)操作及索引优化技术。主要内容包括:1. 表的CRUD操作:详细讲解了CREATE、INSERT、SELECT、UPDATE、DELETE等基本操作,以及WHERE条件查询、结果排序、分页筛选等高级用法。2. 函数应用:介绍了日期、字符串和数学三类常用函数的使用方法。3. 复合查询:涵盖单表/多表查询、自连接、子查询等复杂查询技术。4. 内外连接:解析了内连接、左外连接和右外连接的区别与应用场景。5. 索引原理与优化:深入剖析了B+树索引结构。
2026-05-26 23:07:55
413
原创 I/O多路复用:基于epoll实现Reactor高性能TCP服务器
本文系统介绍了Linux下的I/O多路复用技术及其在构建高性能网络服务器中的应用。主要内容包括: I/O多路复用技术演进 select:使用位图管理文件描述符,存在数量限制和性能线性下降问题 poll:改用pollfd结构体数组,突破数量限制但仍需线性扫描 epoll:采用红黑树管理描述符和就绪链表,实现O(1)时间复杂度的事件通知 Reactor设计模式 事件驱动架构,通过事件循环监听和处理I/O事件 将I/O操作与业务逻辑解耦,提高并发处理能力 基于epoll实现高效的事件通知机制 服务器实现 分层架构
2026-05-13 14:59:41
523
原创 HTTP协议深度解析—从HTTP原理到手写实现服务器
本文深入解析HTTP协议原理并实现了一个完整的HTTP服务器。首先介绍了HTTP协议的基本概念,包括URL结构、请求/响应格式、HTTP方法和状态码。然后详细阐述了服务器架构设计,包含网络通信、日志系统、线程安全等核心模块。通过C++实现了一个支持静态文件服务和动态路由的多进程服务器,能够处理GET/POST请求、重定向、错误页面等功能。最后展示了前端页面实现,包括登录注册表单、404错误页面等。该项目从底层socket编程到上层HTTP协议处理,系统性地构建了一个可扩展的Web服务器框架。
2026-04-30 20:47:41
921
2
原创 一文读懂TCP通信机制:基于相关API构建可靠性连接
本文介绍了基于Linux的TCP通信实现,重点讲解了socket相关API接口和EchoServer回显服务器的开发过程。文章首先阐述了TCP与UDP的区别,详细说明了socket、bind、listen、accept、connect等核心API的使用方法。然后通过一个完整的EchoServer项目,展示了TCP通信的具体实现,包括common基础设施模块、mutex线程同步模块、log日志系统模块、inetaddr网络地址封装类以及tcpserver核心功能模块的实现。
2026-04-19 20:01:39
384
原创 Linux网络:基于协议栈原理实现UDP通信
本文系统介绍了Linux网络通信的实现原理,重点阐述了基于UDP协议的套接字编程方法。文章首先解析了TCP/IP四层网络模型,详细说明了各层功能及协议封装流程,包括IP地址与端口号的标识作用。然后深入讲解了Socket编程接口,包括socket创建、bind绑定、sendto/recvfrom收发等关键系统调用。通过一个完整的UDP通信实例,展示了客户端与服务端的实现过程:客户端通过命令行参数获取服务器地址,循环收发消息;服务端采用多线程安全设计,整合日志模块记录运行状态。
2026-04-11 21:29:24
532
原创 Linux系统收官篇:线程学习的一些心得总结
本文深入探讨了Linux系统编程中的多线程技术。首先介绍了线程的基本概念及其相较于进程的优势,包括更低的创建开销和更高的通信效率。随后详细讲解了线程控制相关API,如创建、终止、等待和分离线程。针对线程同步问题,文章分析了互斥锁和条件变量的实现原理,并给出了封装示例。此外,还介绍了生产者消费者模型和线程池的实现方法,包括环形队列和单例模式的应用。最后总结了线程作为轻量级进程的特点,强调其在提升程序并发性能方面的重要性,同时指出需要谨慎处理同步和数据竞争问题。
2026-04-06 14:46:04
402
原创 浅入深出吃透Linux信号底层机制—从原理到实战的一大步
本文深入探讨了Linux系统中的信号机制,从信号的基本概念、处理方式到具体实现原理进行了系统分析。信号作为进程间异步通信的软中断机制,其生命周期包括产生、阻塞、未决和递达四个阶段。文章详细介绍了信号的三种处理方式(忽略、默认动作和自定义捕捉),并通过代码示例演示了终端按键、系统命令和函数调用等多种信号产生方式。同时,深入解析了信号集操作函数、信号屏蔽机制以及信号捕捉过程,特别说明了SIGCHLD信号在避免僵尸进程方面的应用。通过分析信号在内核态与用户态之间的传递机制,揭示了操作系统实现异步控制流劫持的原理。
2026-03-27 02:17:18
434
原创 Linux进程间通信IPC:从管道到共享内存的发展演进
本文介绍了Linux系统中的两种进程间通信(IPC)机制:管道和共享内存。管道分为匿名管道(用于有亲缘关系的进程)和命名管道(可用于无亲缘关系的进程),通过文件描述符实现单向数据流传输。共享内存则是最高效的IPC方式,直接映射同一块物理内存,避免了内核数据拷贝。文章详细阐述了两种机制的系统调用接口、实现原理和使用场景,并通过具体代码示例展示了父子进程间管道通信和独立进程间共享内存通信的实现过程。最后指出管道适合小数据传输,共享内存适合高性能需求,二者共同构成了Linux进程通信的基础。
2026-03-21 19:07:43
405
原创 深入理解Linux文件系统:从基础IO到文件重定向
本文深入探讨了Linux文件系统的核心机制,重点分析了文件I/O操作、系统调用与文件描述符的关系。文章首先阐述了一切皆文件的设计理念,指出Linux将各类硬件设备和资源都抽象为文件对象。随后详细介绍了文件描述符的分配规则、系统调用接口(open/read/write等)与库函数的区别,并通过代码示例演示了文件操作、重定向的实现原理。特别对dup2系统调用实现文件描述符重定向的机制进行了剖析,解释了输出重定向的本质是修改文件描述符指向。最后总结了Linux统一文件接口的设计优势。
2026-03-14 16:53:15
432
原创 基于进程控制替换原理的自定义Shell实现
本文介绍了Linux中进程替换的原理及exec系列函数的用法,并基于此实现了一个自定义shell。主要内容包括:1. 进程替换原理:通过exec函数加载新程序替换当前进程;2. exec系列函数详解(execl/execlp/execle/execv/execvp/execve)的功能区别与使用场景;3. 自定义shell的实现原理与关键模块:命令行解析、进程创建与替换、环境变量管理、内置命令处理等。通过这个简单shell的实现,展示了操作系统命令行解释器的工作原理,为理解系统编程和并发处理提供了基础。
2026-03-07 21:19:54
435
原创 Linux深入理解进程&手写实现进程控制
本文深入解析了Linux进程的生命周期与管理机制。首先介绍了进程的基本概念,指出进程是程序执行的实例和系统资源分配的基本单位,其核心是task_struct数据结构。详细阐述了进程创建(fork系统调用)、状态转换(运行、睡眠、僵尸、孤儿等状态)和优先级调整机制。重点分析了僵尸进程的危害及进程等待(wait/waitpid)的资源回收方法,通过代码示例展示了阻塞与非阻塞等待的实现。文章还探讨了进程地址空间的虚拟特性,解释了父子进程共享代码但数据独立的现象。最后总结了进程作为操作系统核心抽象的重要意义。
2026-03-01 22:57:22
641
原创 版本控制器git及gdb调试技巧深度剖析
本文介绍了Git版本控制和gdb调试工具的使用方法。主要内容包括:1. Git的安装配置及如何将本地代码推送到Gitee平台,详细说明了从创建仓库到代码推送的全过程;2. gdb调试器的基本使用方法,包括调试模式设置、常用调试命令介绍,以及增强版cgdb工具的使用;3. 阐述了Git和gdb在项目开发中的重要性,Git作为代码"时光机"管理版本迭代,gdb作为"显微镜"进行代码调试,二者结合可实现高效的代码管理。文章为开发者提供了实用的技术指导,帮助提升代码管理和调试
2026-02-19 22:19:38
704
原创 Linux自动化构建make/Makefile—项目开发必备
本文介绍了Linux项目开发中make/Makefile工具的使用方法及其在进度条实现中的应用。主要内容包括:1. make/Makefile的基本语法、文件依赖关系和清理操作;2. 通过预处理、编译、汇编过程分析Makefile的执行原理;3. 利用回车换行符(\r\n)和行缓冲区特性实现命令行进度条;4. 开发了两个版本的进度条程序,展示了Makefile自动化构建的优势。文章强调Makefile能显著提升开发效率,是实现大型项目自动化构建的重要工具。
2026-02-14 17:55:05
787
1
原创 C++11进阶—在拥挤和变化的世界中茁壮成长
本文详细介绍了C++11标准引入的核心新特性,包括可变参数模板、emplace系列接口、lambda表达式、包装器function、bind适配器、异常处理机制和智能指针等。通过具体代码示例展示了这些特性的使用方法,并深入分析了其底层实现原理。特别强调了智能指针(unique_ptr、shared_ptr、weak_ptr)在资源管理方面的优势,以及如何解决循环引用问题。文章还探讨了C++11异常处理机制的改进和线程安全问题。这些新特性使C++成为更安全、更现代的编程语言,显著提升了代码的健壮性和可维护性。
2026-01-30 20:27:29
640
原创 C++11新特性:现代C++的文艺复兴
本文介绍了C++11引入的几个重要新特性:1)列表初始化实现了统一初始化方式,支持所有对象用{}初始化;2)右值引用通过区分左值和右值,支持移动语义,减少了不必要的拷贝;3)移动语义通过移动构造和移动赋值提高了资源利用效率;4)引用折叠规则解决了模板参数推导中的引用问题;5)完美转发保持了参数传递时的值类别不变。这些特性共同推动了C++向现代编程语言的转变,提高了代码效率和表达能力,为后续C++发展奠定了基础。
2026-01-14 20:44:50
695
1
原创 哈希实现&封装unordered系列容器
本文介绍了基于哈希桶实现的unordered_set和unordered_map容器。哈希桶通过链表处理冲突,使用素数扩容策略减少冲突。详细阐述了哈希桶的构造、析构、迭代器实现及find/insert/erase等核心操作。unordered_set和unordered_map通过封装哈希桶实现,其中unordered_map额外实现了operator[]操作。相比红黑树实现的set/map,哈希实现的容器具有O(1)的平均时间复杂度,在查找效率上更具优势。
2026-01-01 22:09:36
1112
原创 红黑树实现—规则&约束的平衡之道
本文系统介绍了红黑树的结构特性与实现方法。红黑树作为平衡二叉搜索树,通过颜色约束规则(根节点为黑、无连续红节点、路径黑节点数相同)实现近似平衡,其查找效率为O(logN)。重点阐述了红黑树的插入操作,详细分析了三种处理情况:单纯变色、单旋+变色和双旋+变色。文章还提供了结点结构定义、查找、结点数统计、高度计算、中序遍历以及平衡性检查等核心功能的实现代码,并通过测试用例验证了实现的正确性。相比AVL树,红黑树以稍宽松的平衡条件换取更少的旋转操作,在实践中应用更为广泛。
2025-12-20 21:49:50
689
原创 AVL树结构实现—高效算法的“平衡大师“
本文系统介绍了AVL树的结构特性与实现原理。AVL树作为平衡二叉搜索树,通过控制左右子树高度差不超过1来保持平衡,其查找、插入时间复杂度均为O(logN)。文章详细解析了AVL树的结点结构、查找、中序遍历等基础操作,重点阐述了插入操作的平衡因子更新规则和四种旋转调整策略(左单旋、右单旋、左右双旋、右左双旋)。通过代码实现和性能测试验证了AVL树的高效性,10万数据插入仅需0.1秒,查找仅79毫秒,树高保持在19层,充分展现了AVL树动态平衡的优势。
2025-12-08 22:09:31
962
原创 关联式容器set、map—底层结构&实战应用
本文介绍了STL中的关联式容器set和map。set是基于红黑树实现的key搜索容器,支持去重和自动排序,常用接口包括insert、erase、find等;map是key-value结构的红黑树实现,支持operator[]访问和修改。文章详细讲解了set/map的定义、常用接口和使用方法,并分析了multiset/multimap的区别。最后通过四个实际应用案例(求数组交集、链表环入口点、随机链表复制和前K高频单词)展示了这些容器的强大功能。
2025-12-04 18:59:28
924
原创 二叉搜索树算法实现—查找&映射的思想艺术
本文详细介绍了二叉搜索树(BST)的结构与实现。二叉搜索树是一种基于二叉树的数据结构,其左子树所有节点值小于根节点,右子树所有节点值大于根节点。文章首先阐述了BST的定义和性质,然后重点讲解了查找、插入、删除等核心操作的实现方法,包括处理删除时的四种不同情况。同时介绍了key-value场景下的BST实现及其应用,如简易字典和统计词频。文章还分析了BST的性能特点,指出其在最坏情况下会退化为链表,时间复杂度为O(N)。最后指出BST是AVL树、红黑树等更高级平衡树结构的基础。
2025-11-29 15:39:07
846
原创 继承&多态—C++面向对象的“瑞士军刀”
本文将围绕继承、多态两大特性展开介绍,继承、多态可认为是在封装的基础上进一步扩展,进一步实现了代码复用。在继承中,子类将继承父类,父类的成员变量和函数在子类中都各有一份,子类在父类的基础上进一步扩展成员和功能,实现了父类的复用,多态与模板类似,都能实现复用,不同在于模板是通过传不同参数类型,在编译时生成对应的函数,是静态的,而多态则是同一个函数通过传不同的对象,在运行时实现相应的功能,是动态的。在面向对象编程中,继承、多态可谓是面向对象的"瑞士军刀",在面向对象编程中有着广泛的应用。
2025-11-25 12:21:47
671
原创 STL设计模式探秘:容器适配器&仿函数
本文探讨了STL中容器适配器与仿函数的实现原理及应用。容器适配器(stack、queue、priority_queue)通过封装现有容器(vector、list、deque)实现特定结构,其中deque因其高效的两端操作成为默认适配容器。仿函数通过重载operator()实现函数式调用,为排序等操作提供灵活性。重点分析了:1) 容器适配器的实现机制,包括stack基于vector、queue基于list的适配方法;2) deque的中控指针数组结构及其迭代器实现;3) priority_queue的堆算法。
2025-11-15 21:41:42
1351
原创 从基本用法到迭代器实现—list重难点突破
本文介绍了C++ STL中list容器的实现原理及核心接口。list基于带头双向循环链表实现,其迭代器通过封装结点指针并重载操作符实现,支持增删改查等操作。重点分析了list的特有接口如sort、merge、splice等,详细讲解了迭代器模板的实现原理,包括operator*和operator->的重载。通过对比vector,指出list插入不会导致迭代器失效但删除会失效的特点。最后展示了如何实现list的核心功能,包括构造、析构、拷贝等,体现了通过模板化设计减少代码重复的思想。
2025-11-11 21:04:07
793
原创 C++ STL::vector底层剖析
本文介绍了C++ STL中的vector容器,重点分析了其常用接口及实现原理。vector基于动态顺序表实现,具有自动内存管理、灵活改变空间大小的特点。文章详细讲解了构造、迭代器、reserve、resize等核心接口的使用方法,并实现了vector的二重嵌套结构(如二维数组和杨辉三角)。在实现层面,通过三个指针成员变量管理存储空间,剖析了push_back、insert、erase等关键操作的底层逻辑,特别强调了insert和erase操作可能导致的迭代器失效问题。最后总结了vector相比其他容器的优势
2025-11-05 21:21:56
715
原创 C++ string相关接口&模拟实现
本文详细介绍了C++中string类的用法及其模拟实现。string作为基础类封装了字符串操作,是学习面向对象编程的重要切入点。文章首先讲解了string的构造、访问、容量管理等基础用法,通过代码示例展示了迭代器、范围for等高级特性。随后重点阐述了string的模拟实现过程,包括构造函数、拷贝控制、运算符重载等核心功能,并提供了完整的测试验证。实现过程中特别强调了深拷贝的重要性,避免浅拷贝导致的内存问题。最后指出string是C++标准库的重要组成部分。
2025-10-27 21:04:42
1095
原创 C++内存管理&模板深度剖析
本文深入探讨了C++的内存管理机制和模板编程两大核心特性。在内存管理方面,文章详细介绍了C++内存区域的划分(栈、堆、静态区等)以及new/delete操作符的使用,特别是对自定义类型的内存管理机制进行了剖析。在模板编程方面,重点阐述了函数模板和类模板的概念、实现原理及使用方法,包括模板的实例化过程(隐式和显式)。文章通过丰富实例展示了模板如何解决代码复用问题,并对比了C++与C在内存管理和代码复用方面的差异与优势。最后强调理解内存管理和模板编程是掌握C++高效开发的关键所在。
2025-10-14 18:39:59
787
原创 再探类&对象——C++入门进阶
本文深入探讨了C++类和对象的进阶内容,主要包括五个核心知识点:初始化列表的使用规则和注意事项;static成员变量的特性及其共享特性;友元函数和友元类如何突破封装限制;内部类的定义及其与外部类的关系;匿名对象的特性和适用场景。文章通过代码示例详细演示了这些特性的实际应用,并强调了面向对象编程的设计思维,指出理解和掌握这些概念对后续学习C++面向对象编程和STL具有重要意义。
2025-10-06 12:54:24
1135
原创 C++类&对象&运算符重载综合应用——日期类项目的实现
本文介绍了一个C++日期类项目的实现过程,该项目综合应用了类、对象和运算符重载三大核心概念。项目通过Date.h、Date.cpp和Test.cpp三个文件实现日期类,包含年月日成员变量和丰富的成员函数,如日期校验、获取月份天数等。重点实现了各种运算符重载,包括算术运算符(+、-、++、--)、关系运算符(>、<、==等)和流运算符(<<、>>),并对每个功能进行了详细测试验证。该项目展示了C++面向对象编程的特性,通过运算符重载使日期操作更加直观。
2025-10-03 11:30:08
1315
原创 类&对象——C++入门基础
本文介绍了C++中类与对象的核心概念。类作为C语言结构体的扩展,通过class关键字定义,支持成员变量和成员函数,并具有public、private、protected三种访问权限。重点讲解了this指针的隐式传递机制、类的内存对齐规则(与C结构体一致但不包含成员函数),以及6个默认成员函数中的构造函数(用于初始化)和析构函数(用于资源清理)。文章还详细说明了运算符重载的实现方式,包括成员函数形式下this指针的隐式传递特性。最后强调类与对象是面向对象编程的基础,为后续学习封装、继承和多态奠定重要基础。
2025-09-26 17:44:56
927
原创 C++相关概念与语法基础——C基础上的改进与优化
本文对比分析了C与C++的语法特性。C语言贴近底层但存在变量/函数命名冲突、多级指针复杂等问题。C++在此基础上引入命名空间、函数重载、引用等机制,解决了命名冲突问题,简化了指针操作。文章详细介绍了C++的域概念、输入输出流、缺省参数、内联函数和类等核心语法,指出C++通过优化C语言不足提高了开发效率。C++语法更复杂但功能更强大,为后续深入学习软件开发奠定了基础。
2025-09-23 19:40:14
1504
原创 数据结构七大排序算法模拟实现&性能分析
本文系统介绍了数据结构中的七大经典排序算法:冒泡排序、选择排序、堆排序、插入排序、希尔排序、快速排序和归并排序。重点分析了各算法的核心思想、实现逻辑及时间复杂度:冒泡和选择排序时间复杂度为O(N²),适合教学;堆排序和快速排序采用分治思想,时间复杂度为O(NlogN);希尔排序作为插入排序的优化版本,时间复杂度为O(N^1.3)。文章通过代码实现展示了各算法的优化策略(如快速排序的三数取中、小区间优化),并比较了它们的稳定性与适用场景。
2025-09-17 19:19:58
848
原创 二叉树遍历方式&树的递归算法剖析
本文系统介绍了二叉树的基本概念、实现方法和遍历算法。主要内容包括:1)二叉树的递归结构特性,重点区分满二叉树和完全二叉树;2)二叉树结构的实现过程;3)前序、中序、后序三种遍历方式的原理和实现;4)基于递归思想的二叉树算法,如求结点数、叶子数、树高等;5)层序遍历实现及应用;6)完全二叉树的判断方法。文章强调递归思想在树结构中的核心作用,通过大量图示和代码示例,详细展示了如何将二叉树问题转化为左右子树的递归问题求解。最后通过一个综合应用案例,说明了如何根据前序字符串构建二叉树并进行中序遍历。
2025-09-11 17:49:00
1064
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅