二叉查找树、平衡二叉查找树、B Tree、B+ Tree、红黑树个人记录

(具体,待下次补充)

树型结构:

  分支结构,由一个根节点引出多个子节点,有着十分明显的递归特性,子结构和父结构十分类似

  结点度:一个节点所引出的节点个数,如下方二叉查找树,5是根节点,他的度是二,因为它有两个分支

  树的度:结点中最大的结点度

  叶子节点:度为0的就是叶子节点

  双亲结点:4、6的双亲结点是5

  孩子结点:4、6是5的孩子节点

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

二叉查找树:

  左子树键值小于根键值,右子树键值大于根键值,且没有左右路径深度差有限制

   5
 /    \
  4    6
 /  \     \
2    3      7

 

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

平衡二叉查找树:

  也可以成为AVL Tree,在符合二叉查找树的基础上,还需要满足任何节点的左右子树最大深度差为1

    5

   /  \

   2   8

  /  \  /

 1  4  7

    /

   3

该树左三右二,在满足左子树键值小于根键值,右子树大于根键值的二叉查找树的基础上,左右子树深度查只有1,满足了AVL Tree平衡二叉查找树的要求

 

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

平衡多路二叉查找树B Tree:

  

  这是一个三阶的B Tree结构

  现在我们要查找键值为28的节点:

    1、根节点磁盘块1,读入内存,这是第一次磁盘I/O操作

    2、比较28的区间,发现p2指针大于17小于35

    3、根据p2指针进入磁盘块3,读入内存,这是第二次磁盘I/O操作

    4、比较28在磁盘3中的区间,发现指针p2大于26小于30

    5、根据p2指针进磁盘块8,读入内存,这是第三次磁盘I/O操作

    6、发现[28]

  B Tree的特性:

    1、关键字集合分布在整棵树中

    2、任何一个关键字出现且只能出现一次

    3、搜索可能停止在非叶子节点上

    4、自动层次控制

    5、搜索性能等价于全集合做了一次二分查找

  B Tree和AVL Tree的区别在于:B Tree减少了子节点个数,是每次I/O磁盘操作获取的内存发挥了作用,提高了查询效率

 

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

B+ Tree:

  B+ Tree是基于B Tree的变形形式,想MySQL的InnoDB引擎中,就是使用了B+ Tree实现了索引结构

  B+ Tree:

    1、非叶子节点只存储键值信息

    2、所有叶子节点中都有一个指针指向

    3、数据记录全部放在叶子节点中

  B+ Tree的叶子节点中的指针,可以是单项指针,也可以是双向指针,同时在数据库中,B+ Tree的深度一般在2-4层,也就是说每次的磁盘I/O操作也在三次左右

 

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

红黑树:

  1、根节点是黑色

  2、每个节点是红色或者黑色

  3、空的叶子节点必须是黑色

  4、如果一个节点是红色,那么它的子节点必须是黑色

  5、从一个节点到该节点的子孙节点,必须包含相同数目的黑色节点,这样确保没有一条路径会比其余路径长出两倍

  以上是红黑树的五个原则,同时,红黑树是2-3-4树转变而成的,2-3-4树是一个四阶树,2节点转换成黑色节点。3节点转换成左倾或者右倾的黑色父节点带着一个红色子节点,4节点转换成一个黑色父节点带着两个红色子节点,同时保持平成,子节点是一左一右

posted @   将军本就不是什么将军  阅读(24)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示