基于顺序查找
数据随机:顺序查找,遍历 时间复杂度O(N)
数据已序:二分查找,时间复杂度O(log2^N)
索引顺序:数据量大,建立静态索引
基于树形查找
二叉树: 二叉搜索树,二叉平衡树
多叉树: B-树,B+树,B*树
基于哈希查找
哈希:哈希表,哈希桶,位图,布隆过滤器,
二叉搜索树(二叉排序树)
特点:
左子树不为空,则左子树上所有节点小于根节点的值
右子树不为空,则右子树上所有节点大于根节点的值
它的左右子树也为二叉搜索树
*中序遍历为递增序列
//
二叉搜索树的操作:
查找
若根节点不为空
如果根节点key==查找key,返回true
如查找key<根节点key,在左子树查找
如查找key>根节点key,在右子树查找
插入
在二叉搜索树中插入新元素,必须先检测该元素是否在树中已经存在 ,若存在则不进行插入操作,否则将新元素加入到搜索停止的地方
树为空,则直接插入,返回true
树不为空,按二叉搜索树性质查找插入的位置,插入新节点
删除
首先查找元素是否存在二叉搜索树中,如果不存在,返回。
若存在则删除情况如下
a.要删除的节点无孩子节点
直接删除该节点
b.要删除的节点只有左孩子节点
删除该节点,且双亲节点指向被删节点的左孩子节点
c.要删除的节点只有右孩子节点
删除该节点,且双亲节点指向被删节点的右孩子节点
d.要删除的节点有左右孩子节点
在它的右子树中寻找中序下的第一个节点(关键码最小),
用它的值填补到被删节点中,再处理该节点的删除问题。