一些特殊的二叉树

  • 二叉查找树
  • 平衡二叉树

—————————————————————

二叉查找树(又名: 二叉搜索树)(BST, Binary Search Tree)

二叉查找树 又名 二叉搜索树,英文名BST=Binary Search Tree。
二叉查找树的结点按照“左根右”有序排列,因此中序访问是元素有序的。

————————————————————

平衡树

平衡树指的是任意结点的子树的高度差都小于等于1。
常见的平衡树有:AVL树(二叉平衡搜索树),B树(多路平衡搜索树)

————————————————————

平衡二叉搜索树(AVL)

AVL这个简称并不是平衡二叉搜索树的英文缩写,而是得名与它的发明者 G. M. Adelson-Velsky 和 E. M. Landis。

AVL既是平衡树,也是搜索树。

————————————————————

B树(Balance-Tree, 多叉平衡搜索树)

B树既是平衡树,也是搜索树。

“B-树”就是“B树”,中间的横线并不是减号。

MySQL数据库中的“索引”是基于 Hash表 或者 B+树 数据结构的,这是因为树的查找效率高,而且可以保持有序(B树的访问、查找、插入、删除操作的时间复杂度都是O(logN))。

MySQL等数据库的索引操作使用B+树而没有使用二叉查找树的原因不是因为查找速度,其实从算法逻辑上讲二叉查找树的速度和比较次数都是最小的,但是不得不考虑一个现实问题:磁盘IO。

利用索引查询的时候,不可能吧整个索引全部都加载到内存中,只能逐一加载每一个磁盘页(对应树的结点)。

什么是磁盘页:
一句话概括:操作系统访问内存的最小单位。

操作系统经常与 内存、硬盘 两种存储设备进行通信。
与内存操作,是虚拟一个 页 的概念作为最小单位;
与磁盘操作,虚拟一个 块 的概念作为最小单位。(多个扇区合并为一个块)

猜你喜欢

转载自blog.csdn.net/ArtAndLife/article/details/108838552