二叉查找树:
1. 对于树中的每一个节点,如果它有左子数,则左子树中所有节点的值不大于该节点值;如果它有右子树,则有子树中所有节点的值不小于该节点的值。
根据这个性质,可以证明二叉搜索树具有执行查找、插入、删除等操作的时间复杂度为O(lgn)的特点。
而且可以证明,一棵由n个结点,随机构造的二叉查找树的高度为lgn,所以顺理成章,一般操作的执行时间为O(lgn)。
//至于n个结点的二叉树高度为lgn的证明,可参考算法导论 第12章 二叉查找树 第12.4节。
2. 但若是一棵具有n个结点的线性链,则此些操作最坏情况运行时间为O(n)。
一般的,红黑树,满足以下性质,即只有满足以下全部性质的树,我们才称之为红黑树:
1)每个结点要么是红的,要么是黑的。
2)根结点是黑的。
3)每个叶结点(叶结点即指树尾端NIL指针或NULL结点(与平时说的叶结点不同!))是黑的。
4)如果一个结点是红的,那么它的俩个儿子都是黑的。
5)对于任一结点而言,其到叶结点树尾端NIL指针的每一条路径都包含相同数目的黑结点。
树的左旋:
左旋以pivot到y之间的链为“支轴”进行,它使y成为该孩子树新的根,而y的左孩子b则成为pivot的右孩子。
2.右旋
2-3-4树:
2-3-4 树在计算机科学中是阶为 4 的B树。根据维基百科上的介绍:大体上同B树一样,2-3-4 树是可以用做字典的一种自平衡数据结构。它可以在O(log n)时间内查找、插入和删除,这里的 n 是树中元素的数目。2-3-4 树在多数编程语言中实现起来相对困难,因为在树上的操作涉及大量的特殊情况。红黑树实现起来更简单一些,所以可以用它来替代(红黑树稍后介绍)。以下就是一棵2-3-4树:
插入操作:待插入的结点是3时,把中间结点上移,分裂