参考:《算法导论》第12、13章
二叉搜索树
二叉搜索树上的每个基本操作都能在O(h)时间内完成,随着元素的插入和删除,二叉搜索树的高度是变化的。
定义 某结点的左子树的结点都小于它,右子树的结点都大于等于它。
查找 在一棵二叉树中查找一个具有给定关键字的结点
后继 结点x的后继是大于x.key的最小关键字的结点
①x的右子树非空:后继是x右子树中的最左结点
②x的右子树非空并有一个后继y,y就是x的有左孩子的最底层祖先
插入
删除
构建
一棵有n个不同关键字的随机构建二叉搜索树的期望高度为O(lgn)。
红黑树
性质
红黑树是一棵二叉搜索树,它在每个结点上增加了一个存储位来表示结点的颜色,可以是red或者black。
通过对任何一条从根到叶子的简单路径上各个结点的颜色进行约束,红黑树确保没有一条路径会比其他路径长出两倍,因而是近似于平衡的。
B树
定义
B树是一种平衡搜索树,降低磁盘I/O操作数,B树的结点可以有很多孩子,每棵有n个结点的B树的高度为O(lgn),可以使用B树在时间O(lgn)内完成一些动态集合的操作。
B+树:所有卫星数据都存储在叶子结点中,内部结点只存放关键字和孩子指针,因此最大化了内部结点的分支因子。
搜索