知识手册 59 个条目
数据结构
从栈、队列与链表的操作契约出发,学习集合合并、优先级维护和区间查询,再进阶到平衡树、历史版本与动态树。选型时列清查询与修改,再比较时间、空间和实现成本。
数据结构基础
先用线性结构练习不变量与边界处理,再按访问顺序、区间统计和特殊约束选择结构;单调性往往能省去反复搜索。
并查集
围绕代表元维护集合的合并与归属查询,理解路径压缩、按秩合并及其复杂度;先确认问题是否只需合并而不需拆分。
堆
从反复取最值的需求出发,比较二叉堆与可并堆,关注插入、删除最值和合并操作各自的代价。
块状数据结构
把整体维护拆成整块统计与边界扫描,通过块大小平衡查询和修改;进一步比较数组、链表与树上的分块方式。
线段树
先明确区间信息如何合并、修改标记如何复合,再学习合并分裂与特殊维护方式;不同变体需要分别检查适用条件。
二叉搜索树 & 平衡树
从有序集合的查找、插删和排名出发,比较旋转、随机优先级与重构等维护策略,区分最坏与均摊复杂度。
可持久化数据结构
把一次修改视为新版本的创建,理解结点共享与路径复制,并核算版本数量、查询能力和内存增长。
树套树
将位置与值域等多个维度分层维护,先确定内外层各负责什么操作,再估算嵌套后的时间和空间成本。
动态树
围绕树上路径、子树信息与结构变化选择表示,比较辅助树和遍历序列的维护方式,并逐项确认连接、断边等操作的支持范围。