一、定义
平衡树是搜索树与堆的结合数学结构
平衡树是一颗空树或者其左右子树高度相差不大于1,并且左右两颗子树都是平衡二叉树。
平衡树与二叉搜索树的区别:平衡树本身是二叉搜索树,但其是二叉搜索树通过”旋转“得到的最优二叉搜索树 (最优二叉搜索树:具有最少的平均比较次数的二叉搜索树,平均比较次数=每个结点的查找概率*查找该节点的比较次数(从各节点一层一层还是比较,也就是层数))求和),个人理解平衡树不一定是二叉,B树就可以是多叉。
二、特点
平衡树的平均查找时间 小于等于 二叉搜索树的平均查找时间
三、分类
(1)平衡二叉树
(2)红黑树
(3)B树
根节点至少两个子节点,至多M个子节点
其他节点至少M/2个子节点,至多M个子节点
每个节点至少M/2-1个Key,至多M-1个Key,并且升序排列
所有叶子节点位于同一层
适用于查询多
(4)B+树
非叶子节点只存储Key值,不存储数据>叶子节点存储key值和数据。非叶子节点仅具有索引功能,跟记录有关的信息存放在叶子节点
叶子节点增加链指针,所有叶子节点构成一个有序链表
适用于索引与数据的分离
一个节点中的 key 从左到右非递减排列,如果某个指针的左右相邻 key 分别是 keyi 和 keyi+1,且不为 null,则该指针指向节点的所有 key 大于等于 keyi 且小于等于 keyi+1。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。