树系列
共 20 篇 · 建议按顺序阅读

第 1 篇 · 树系列第 1 篇:从数组、链表到树——为什么我们需要层次结构
从数组和链表讲起,用文件系统、族谱、网页 DOM 等生活例子解释为什么需要树形结构,建立树的直觉。
第 2 篇 · 树系列第 2 篇:树的基本术语——把每一句话都看懂
系统讲解节点、边、根、父/子、兄弟、叶子、子树、深度、高度、层、森林等全部树术语,每个术语配图和例子。
第 3 篇 · 树系列第 3 篇:二叉树——最受宠的树
为什么计算机里到处都是二叉树:定义、左孩子右孩子、满/完全/完美二叉树、节点数与高度的关系,为后面 BST、AVL、红黑树打地基。
第 4 篇 · 树系列第 4 篇:树的存储方式——链式、数组与父子表示
一棵树在内存里到底怎么放?详解链式节点、数组存储、父子表示法三种方案,比较读写代价与适用场景。
第 5 篇 · 树系列第 5 篇:深度优先遍历——前序、中序、后序
递归与栈视角彻底讲透二叉树的前序、中序、后序遍历:手算口诀、递归展开、迭代写法、复杂度与经典应用。
第 6 篇 · 树系列第 6 篇:广度优先遍历——层序与遍历应用
用队列逐层扫描整棵树:层序遍历的原理、手算、代码;再把四种遍历放在一起对比,讲清序列化、判断完全二叉树等经典应用。
第 7 篇 · 树系列第 7 篇:二叉搜索树——查找、插入与删除
从二分查找的直觉到 BST 的定义:查找、插入、删除三种情况的完整图解,中序有序性,以及复杂度分析。
第 8 篇 · 树系列第 8 篇:BST 为什么会退化——平衡的必要性
同样是一棵二叉搜索树,为什么有的查找 3 次、有的要 100 次?用最直观的方式讲清退化、平均与最坏、以及“平衡”到底在平衡什么。
第 9 篇 · 树系列第 9 篇:AVL 树——旋转与插入
第一个自平衡二叉搜索树:平衡因子、最小失衡子树、LL/RR/LR/RL 四种旋转的完整图解,以及插入修复全流程。
第 10 篇 · 树系列第 10 篇:AVL 树的删除、复杂度与对比
AVL 树最难的部分来了:删除后可能一路失衡到根。完整图解删除修复流程,证明高度上界,并与普通 BST 全面对比。
第 11 篇 · 树系列第 11 篇:红黑树——五条性质背后的直觉
红黑树不是背规则的树:从“为什么需要近似平衡”出发,逐条拆解五条性质,用黑高和最长/最短路径理解它为什么是 O(log n)。
第 12 篇 · 树系列第 12 篇:红黑树的插入与删除——修复全流程
红黑树最难啃的部分:插入的三种修复情况、删除的双黑问题与四种修复情况,全部配图逐步拆解,附完整代码。
第 13 篇 · 树系列第 13 篇:从内存到磁盘——为什么需要 B 树
红黑树在内存里很好用,一到磁盘就不行了?讲清内存与磁盘的 IO 差距、扇区/页的概念,以及 B 树如何用“多路”换“矮”。
第 14 篇 · 树系列第 14 篇:B 树操作与 B+ 树——数据库索引的秘密
B 树插入如何分裂、删除如何合并,B+ 树为什么把数据全放叶子并用链表串起来:数据库索引背后的真正主角。
第 15 篇 · 树系列第 15 篇:跳表——概率平衡的层级结构
把有序链表加几层“快速通道”就得到跳表:查找怎么跳、插入怎么抛硬币、为什么期望 O(log n),以及 Redis 为什么选它。
第 16 篇 · 树系列第 16 篇:堆与优先队列
完全二叉树藏在数组里就成了堆:上浮、下沉、建堆、堆排序、优先队列与 Top-K,一张图讲透堆的全部操作。
第 17 篇 · 树系列第 17 篇:Trie——前缀树
把字符串按字符拆成树:插入、查找、前缀查询、词频统计、自动补全,以及压缩 Trie 和与哈希表的对决。
第 18 篇 · 树系列第 18 篇:并查集——森林与连通性
用一堆小树回答“你和我在不在一个圈子”:并查集的查、并、路径压缩、按秩合并,以及从社交网络到 Kruskal 的经典应用。
第 19 篇 · 树系列第 19 篇:线段树与树状数组——区间问题的树形解法
数组要频繁“改一个点、查一段和”怎么办?线段树把区间拆成 O(log n) 段,树状数组用 lowbit 玩转前缀和:两大区间数据结构全图解。
第 20 篇 · 树系列第 20 篇:哈夫曼树、选型指南与系列总结
用贪心思想造一棵最优编码树;再用一张决策图总结全系列 19 种树形结构的适用场景,完成树系列收官。