树的进化

简介: 树的进化

  • 为什么需要红黑树?
  • 线性查找(效率低)->二分查找->二叉查找树(易退化成链表)->AVL平衡二叉树(数据变化频繁更新节点)->红黑树(在平衡之中的取舍,不追求绝对的平衡)
  • AVL树:任何节点两个子树的高度差绝对值小于等于1;AVL树所希望的是一种绝对的平衡,当数据发生变动时,AVL树会进行旋转处理。而我们需要考虑的则是对于AVL树绝对平衡所需要的代价
  • AVL树中最耗费时间的实际上是数据发生改变后的,重新构造一颗平衡树。
  • 红黑树舍弃了AVL树的绝对平衡,更多的是一种折中的方式
  • 红黑树性质:
  • 节点非黑即红
  • 根节点必为黑
  • 没有连续的红色节点
  • 任意一结点到每个叶子结点的路径都包含数量相同的黑结点
  • B-Tree
  • B树使用场景:文件索引
  • B树特性:
  • 设一个节点存在k个关键字,则必然存在k+1个孩子
  • B树的数据每个节点都存在
  • 每个节点的元素按照值域划分,从大到小
  • B树如下:
  • B+Tree
  • B+Tree使用场景:数据库索引
  • B+树特性
  • 设一个节点存在k个关键字,则必然存在k个子节点
  • B+树仅在叶子节点存放数据
  • B+树的叶子节点包含了指向下一个节点的指针
  • B+树如下:
  • B+Tree与B-Tree比较
  • B+Tree不需要做中序遍历,因此不需要回查其余的节点,只需要遍历叶子节点,因此减少了回查节点的I/O次数
  • B+Tree中间节点不包含数据,所以B+Tree在同样页面下所加载的索引会更多,减少了缺页中断的次数以及I/O的次数
目录
相关文章
|
6天前
|
存储
【二叉树前沿篇】树
【二叉树前沿篇】树
19 0
|
7月前
|
存储 算法 C++
一篇文章教会你什么是高度平衡二叉搜索(AVL)树(上)
AVL树的概念 AVL树(Adelson-Velsky and Landis Tree)是计算机科学中最早被发明的自平衡二叉查找树。在AVL树中,任一节点对应的两棵子树的最大高度差为1,因此
|
6天前
|
C++
【C++高阶(三)】AVL树深度剖析&模拟实现
【C++高阶(三)】AVL树深度剖析&模拟实现
|
6天前
关于近视与老花眼是否会达到平衡的研究
近视和老花眼是两种常见的眼睛屈光问题,它们有不同的原因和发展过程。近视是指远处物体看不清楚,主要是眼球轴长或角膜曲率过大导致光线聚焦在视网膜前,而不是在上面。老花眼是指难以看清近距离物体,主要是由于年龄增长导致眼中晶体变硬,难以调节对近距离的聚焦能力。
关于近视与老花眼是否会达到平衡的研究
|
7月前
|
存储 测试技术
一篇文章教会你什么是高度平衡二叉搜索(AVL)树(下)
3.3 新节点插入较高左子树的右侧—左右:先左单旋再右单旋
|
9月前
|
存储 关系型数据库 MySQL
浅浅谈一谈B树和B+树
浅浅谈一谈B树和B+树
|
10月前
|
机器学习/深度学习 人工智能 前端开发
强化学习:基于蒙特卡洛树和策略价值网络的深度强化学习五子棋
强化学习:基于蒙特卡洛树和策略价值网络的深度强化学习五子棋
强化学习:基于蒙特卡洛树和策略价值网络的深度强化学习五子棋
|
11月前
|
机器学习/深度学习 人工智能 自然语言处理
思考、思考、思考不停歇,思维树ToT「军训」LLM
思考、思考、思考不停歇,思维树ToT「军训」LLM
130 0
|
算法 机器人
<<算法很美>>——(四)——深入递归<一>——自上而下,自下而上
<<算法很美>>——(四)——深入递归<一>——自上而下,自下而上
<<算法很美>>——(四)——深入递归<一>——自上而下,自下而上
|
机器学习/深度学习 缓存 分布式计算
基于树的机器学习模型的演化
基于树的机器学习模型的演化
107 0
基于树的机器学习模型的演化