第1章 哈希表1.1 哈希表的基本原理1.2 哈希表的基本概念1.3 哈希函數的構造1.4 哈希表的基本操作1.5 沖突的處理1.6 哈希表的性能分析1.7 哈希表的應用舉例1.8 本章習題第2章 樹與二叉樹2.1 樹2.1.1 樹的存儲結構2.1.2 樹的遍歷2.2 二叉樹2.2.1 普通樹轉換成二叉樹2.2.2 二叉樹的遍歷2.2.3 二叉樹的其他操作2.2.4 二叉樹的形態2.3 二叉排序樹2.4 哈夫曼二叉樹2.5 字典樹2.6 本章習題第3章 優先隊列與二叉堆3.1 優先隊列3.2 二叉堆3.2.1 Put操作3.2.2 Get操作3.3 可并堆3.3.1 左偏樹的定義3.3.2 左偏樹的基本操作3.4 本章習題第4章 并查集4.1 并查集的主要操作4.2 并查集的實現4.2.1 并查集的數組實現4.2.2 并查集的鏈表實現4.2.3 并查集的樹實現4.3 并查集的應用舉例4.4 本章習題第5章 線段樹5.1 線段樹的應用背景5.2 線段樹的初步實現5.2.1 線段樹的結構5.2.2 線段樹的性質5.2.3 線段樹的存儲5.2.4 線段樹的常用操作5.2.4.1 線段樹的構造5.2.4.2 線段樹的查詢5.2.4.3 線段樹的修改5.2.4.4 線段樹的延遲修改5.3 線段樹在一些經典問題中的應用5.3.1 逆序對問題5.3.2 矩形覆蓋問題5.4 線段樹的擴展5.4.1 用線段樹優化動態規劃5.4.2 將線段樹擴展到高維5.4.3 線段樹與平衡樹的結合5.5 線段樹與其他數據結構的比較5.6 線段樹的應用舉例5.7 本章習題第6章 樹狀數組6.1 樹狀數組的問題模型6.2 樹狀數組的基本思想6.3 樹狀數組的實現6.3.1 子集的劃分方法6.3.2 查詢前綴和6.3.3 修改子集和6.4 樹狀數組的常用技巧6.4.1 查詢任意區間和6.4.2 利用sum數組求出原數組a的某個元素值6.4.3 找到某個前綴和對應的前綴下標index6.4.4 成倍擴張/縮減6.4.5 初始化樹狀數組6.5 樹狀數組與線段樹的比較6.6 樹狀數組擴展到高維的情形6.7 樹狀數組的應用舉例6.8 本章習題第7章 伸展樹7.1 伸展樹的主要操作7.1.1 伸展操作7.1.2 伸展樹的基本操作7.2 伸展樹的算法實現7.3 伸展樹的效率分析7.4 伸展樹的應用舉例7.5 本章習題第8章 Treap8.1 Treap的基本操作8.2 Treap的算法實現8.3 Treap的應用舉例8.4 本章習題第9章 平衡樹9.1 AVL樹9.2 紅一黑樹9.3 SBT9.3.1 SBT的基本操作9.3.2 SBT的效率分析9.3.3 SBT的算法實現9.4 本章習題第10章 塊狀鏈表與塊狀樹10.1 塊狀鏈表的基本思想10.2 塊狀鏈表的基本操作10.3 塊狀鏈表的擴張10.3.1 維護區間和以及區間*值10.3.2 維護局部數據有序化10.3.3 維護區間翻轉10.4 塊狀鏈表與其他數據結構的比較10.5 分塊思想在樹上的應用——塊狀樹10.6 塊狀鏈表的應用舉例10.7 本章習題第11章 后綴樹與后綴數組11.1 后綴樹的簡介11.2 后綴樹的定義11.3 后綴樹的構建11.3.1 后綴樹的樸素構建算法11.3.2 后綴樹的線性時間構建算法11.3.2.1 隱式樹的樸素構建11.3.2.2 擴展規則約定11.3.2.3 后綴鏈加速11.3.2.4 進一步加速11.3.2.5 后綴樹拓展到多串的形式11.3.2.6 代碼實現11.3.2.7 相關證明11.4 后綴樹的應用11.4.1 字符串(集合)的精確匹配11.4.1.1 情形一11.4.1.2 情形二11.4.1.3 情形三11.4.1.4 情形四11.4.2 公共子串問題11.4.2.1 情形五11.4.2.2 情形六11.4.2.3 情形七11.4.2.4 情形八11.4.2.5 情形九11.4.3 重復子串問題11.4.3.1 情形十11.4.3.2 情形十一11.4.3.3 情形十二11.5 后綴數組的簡介11.6 后綴數組的定義11.7 后綴數組的構建11.7.1 一種直接的構建算法11.7.2 倍增算法11.7.2.1 倍增算法描述11.7.2.2 倍增算法代碼11.7.3 由后綴樹得到后綴數組11.7.4 DC3算法和DC算法11.7.4.1 DC3算法11.7.4.2 DC算法11.8 LCP的引人11.9 后綴數組的應用11.9.1 后綴排序的直接應用11.9.1.1 Burrows-Wheeler變換11.9.1.2 多模式串的匹配11.9.2 通過引入LCP優化11.9.2.1 多模式串的匹配11.9.2.2 重復子串問題11.9.2.3 *長回文子串11.9.2.4 *長公共子串11.9.3 后綴數組的應用舉例11.10 本章習題第12章 樹鏈剖分與動態樹12.1 樹鏈剖分的思想和性質12.2 樹鏈剖分的實現及應用12.3 動態樹的初探12.3.1 動態樹的常用功能12.3.2 動態樹的簡單情形12.4 動態樹的實現12.4.1 動態樹的基本操作及其實現12.4.1.1 動態樹的問題模型12.4.1.2 用Splay維護實路徑12.4.2 動態樹操作的時間復雜度分析12.4.2.1 動態樹操作的次數12.4.2.2 Splay操作的平攤時間12.5 動態樹的經典應用12.5.1 求*近公共祖先12.5.2 并查集操作12.5.3 求*大流12.5.4 求生成樹12.6 動態樹的應用舉例12.7 本章習題致謝