动态查找树主要有: 二叉查找树(BST),平衡二叉查找树(AVL),红黑树(RBT),B~/B+树(B-tree)。
其都是动态结构。在删除,插入操作的时候,都不需要彻底重建原始的索引树。
最多就是执行一定量的旋转,变色操作来有限的改变树的形态。
其查找的时间复杂度大体维持在O(log(N))数量级上。可能有些结构在最差的情况下效率将会下降很快,比如:BST。
二叉树
)左根右,中序遍历有序
)动态查找树
,在查找的过程中可添加和删除相应的元素,在这些操作中需要保持二叉查找树的以上性质。(在删除,插入操作的时候,都不需要彻底重建原始的索引树。
)不平衡
)平衡
)是一种特殊的二叉查找树。本质为2-3-4B树。
特点:
1. 每个节点是黑色或者红色。
2. 根节点是黑色的。
3. 叶子节点是黑色的。此处是指为NIL(NULL)的叶子节点。
4. 红色节点的子节点是黑色的,即红色节点不可以直接相邻。
5. 从一个节点到该节点的子孙节点的所有路径上,包含相同数目的黑色节点。(确保没有一条路径会比其他路径长出两倍,因而红黑树是相对接近平衡的二叉树)->插入节点为红色。
上述特点隐含的信息:
1. bh(x)值是唯一的,且节点x的亲子节点的黑高,(当x为红色)要么是bh(x),(当x为黑色)要么是bh(x)-1。
2. 2bh(x)>h(x),从节点x到叶子节点,所经历的黑色节点数目>=所经历的红色节点数目。
时间复杂度分析:数学归纳法
假设:一棵红黑树,树高为h(x),黑色节点的高度为bh(x),且叶子节点NIL(NULL)为黑色且高度为0,即bh(x)=0。
引理(人们研究总结发现的规律):以结点x为根的红黑树树至少包含2^bh(x)-1个内节点(不包括叶子节点NIL(NULL))。即:高度为h(x)的红黑树,它包