树
1.二叉搜索树(AVL):
1.所有非叶子结点至多拥有两个儿子(Left和Right);
2.所有结点存储一个关键字;
3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树;
二叉搜索树与二分查找性能比较:
二叉搜索树的所有非叶子结点的左右子树的结点数目均保持差不多(平衡),那么 二叉搜索树的搜索性能逼近二分查找;但它比连续内存空间的二分查找的优点是,改变 二叉搜索树结构(插入与删除结点)不需要移动大段的内存数据,甚至通常是常数开销;
2.b-树(即b树)
B树就是一种平衡的多叉查找树
1.每个节点至多可以拥有m棵子树;
2.根节点,只有至少有2个节点(要么极端情况,就是一棵树就一个根节点,单细胞生物,即是根,也是叶,也是树);
3.非根非叶的节点至少有的Ceil(m/2)个子树(Ceil表示向上取整);
4.非叶节点中的信息包括[n,A0,K1,A1,K2,A2,…,Kn,An],,其中n表示该节点中保存的关键字个数,K为关键字且Ki<Ki+1,A为指向子树根节点的指针;
5.从根到叶子的每一条路径都有相同的长度,也就是说,叶子节在相同的层,并且这些节点不带信息,实际上这些节点就表示找不到指定的值,也就是指向这些节点的指针为空。
3.b+树
b树的加强版;
与b树区别或独有特性;
1.有n棵子树的节点含有n个关键字(也有认为是n-1个关键字)
2.所有的叶子节点包含了全部的关键字,及指向含这些关键字记录的指针,且叶子节点本身根据关键字自小而大顺序连接
3.非叶子节点可以看成索引部分,节点中仅含有其子树(根节点)中的最大(或最小)关键字
查找过程:每次都要查到叶子节点,即使我们的非根非叶子节点为我们的查找值;
参考文章:https://www.cnblogs.com/xiaoxi/p/6868087.html
参考文章:https://www.jianshu.com/p/92ead7dd2e1f
悟道休言天命