二叉查找树、平衡二叉查找树、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节点转换成一个黑色父节点带着两个红色子节点,同时保持平成,子节点是一左一右
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通