树的进化

简介: 树的进化

  • 为什么需要红黑树?
  • 线性查找(效率低)->二分查找->二叉查找树(易退化成链表)->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的次数
目录
相关文章
|
8月前
|
存储
【二叉树前沿篇】树
【二叉树前沿篇】树
55 0
计算机科学中的树
二叉树 ▪ 二叉查找树 ▪ 笛卡尔树 ▪ Top tree ▪ T树 自平衡二叉查找树
67 0
|
存储 算法 C++
一篇文章教会你什么是高度平衡二叉搜索(AVL)树(上)
AVL树的概念 AVL树(Adelson-Velsky and Landis Tree)是计算机科学中最早被发明的自平衡二叉查找树。在AVL树中,任一节点对应的两棵子树的最大高度差为1,因此
|
4月前
|
存储
二叉树理论基础
二叉树理论基础
|
8月前
|
存储 C++ 容器
c++的学习之路:26、AVL树
c++的学习之路:26、AVL树
59 0
|
6月前
|
算法 测试技术 C++
【C++高阶】掌握AVL树:构建与维护平衡二叉搜索树的艺术
【C++高阶】掌握AVL树:构建与维护平衡二叉搜索树的艺术
43 2
|
8月前
|
C++
【C++高阶(三)】AVL树深度剖析&模拟实现
【C++高阶(三)】AVL树深度剖析&模拟实现
|
存储 测试技术
一篇文章教会你什么是高度平衡二叉搜索(AVL)树(下)
3.3 新节点插入较高左子树的右侧—左右:先左单旋再右单旋
|
机器学习/深度学习 人工智能 自然语言处理
思考、思考、思考不停歇,思维树ToT「军训」LLM
思考、思考、思考不停歇,思维树ToT「军训」LLM
171 0
|
存储 算法 JavaScript
二叉树理论基础篇
二叉树理论基础篇 二叉树的种类 满二叉树 完全二叉树 二叉搜索树 平衡二叉搜索树 二叉树的存储方式 二叉树的遍历方式 二叉树的定义 总结 其他语言版本
120 0

热门文章

最新文章