平 衡 树 ( B a l a n c e d B i n a r y T r e e ) 模 板 小 记 平衡树(Balanced~Binary~Tree)~模板小记 平衡树(Balanced Binary Tree) 模板小记
基础概念:二叉搜索树 ( B i n a r y S e a r c h T r e e ) (Binary~Search~Tree) (Binary Search Tree)
- 二叉树
- l e f t c h i l d < r o o t < r i g h t c h i l d leftchild<root<rightchild leftchild<root<rightchild
- 左子树与右子树均为 B S T BST BST
平衡树常用种类: S p l a y , T r e a p , A V L T r e e Splay,Treap,AVL~Tree Splay,Treap,AVL Tree 红黑树等
普通的 B S T BST BST操作 ( ( (如 a d d , q u e r y , d e l e t e ) add,query,delete) add,query,delete) 复杂度一般为 O ( l o g n ) O(log_n) O(logn) 但如果这棵树非常不平衡 如树链 复杂度就会退化成 O ( n ) O(n) O(n)
这时就需要平衡树来维持树的平衡 使复杂度稳定在 O ( l o g n ) O(log_n) O(logn)
基础操作:
- 插入 x x x
- 删除 x x x
- 查询 x x x的排名
- 查询排名为 x x x的数
- 求 x x x的前驱 / / /后继
因为 B S T BST BST的性质 只需将排名为 l − 1 ( l-1~( l−1 (区间的前 1 1 1个数 ) ) ) 的点 s p l a y splay splay 到 r o o t root root 然后将排名为 r + 1 ( r+1~( r+1 (区间后 1 1 1个数 ) ) ) 的点