1.基本概念
二叉树
- 斜树:只有左节点或者只有右节点的树
- 满二叉树:所有非叶子节点的度都是2
- 完全二叉树:除了最后一层,其他层全部填满,最后一层从左到右连续填充
动态查找树
- 平衡二叉树:左右子树的高度差不能超过 1
- 二叉查找树:每个节点左子树的值小于该节点,右子树的值大于该节点
- 红黑树:自平衡二叉查找树,加入了自平衡机制的数据结构,保持树的高度平衡
- 哈夫曼树:又称最优二叉树, 是一种带权路径长度最短的二叉树,用于数据压缩的树,通过赋予常见数据较短编码,降低存储或传输所需空间。它基于字符频率构建,用贪心算法合并频率低的节点,形成最优编码树。
多路查找树
- B 树:一种自平衡树,存储大量有序数据,支持高效的插入、删除和查找操作,通过增加叶子节点,降低树的高度,从而减少磁盘I/O;
- B+ 树:在B树的基础上优化,叶子节点之间增加指针,内部节点存索引,叶子结点存数据,高效的范围查询和排序操作;
- B- 树:类似于B树,相比于B树,B- 树的节点更宽,节点分裂后,会将部分关键字提升到父节点,使得树的高度更低;
- R 树:一种高效的组织多维数据的数据结构,节点(I, child-pointer)表示一个矩形范围,采用平衡树的思想,每个节点维护最小矩形,广泛用于地理信息、数据库优化、数据可视化等。
2.红黑树
红黑树 是一种自平衡的二叉搜索树,它在保持二叉搜索树的基本性质的同时,通过一系列的规则确保树保持相对平衡,从而保证各种操作(插入、删除、查找等)的时间复杂度始终保持在较低的水平。
红黑树具有以下性质:
- 节点颜色: 每个节点要么是红色,要么是黑色。
- 根节点: 根节点是黑色。
- 叶节点(NIL节点): 每个叶节点(即空节点)都是黑色的。
- 颜色相邻: 如果一个节点是红色的,则它的子节点必须是黑色的(没有两个相邻的红色节点)。
- 黑高度平衡: 从任意节点到其每个叶节点的路径上,所经过的黑色节点数目必须相同(黑高度相等)。
红黑树和二叉查找树的区别主要有:
- 平衡性: 普通二叉查找树可能会因为插入或删除操作而退化为链表,而红黑树通过颜色规则和旋转操作保持了树的平衡性。
- 节点属性: 红黑树的每个节点都有一个额外的属性,即颜色属性,可以是红色或黑色,而普通二叉查找树没有这个属性。
- 自平衡操作: 当插入或删除节点时,红黑树会根据颜色规则和旋转操作进行自平衡,从而保持树的平衡性。普通二叉查找树没有这些自平衡操作。
总结:红黑树和普通的二叉查找树的关键差别在于平衡性。在普通二叉查找树中,虽然插入、删除和查找操作快速,但缺乏平衡性可能导致最差情况下操作时间达到O(n)。相比之下,红黑树的平衡性保证了树的高度保持在对数范围内,确保操作的时间复杂度为O(log n)。红黑树通过调整节点颜色和旋转操作来维持平衡,这些操作相对简单,使得在插入和删除操作上红黑树更加高效,但查找操作可能稍微慢一点。