加载中...
替罪羊树是一种无需额外平衡信息的二叉搜索树,通过在插入或删除时监测子树是否失衡,一旦发现某个失衡节点便把它所在的整棵子树暴力重建为完全平衡形态。它不存储颜色、高度或优先级,靠权重与阈值维持均摊对数复杂度。

| 类型 | 自平衡二叉搜索树 |
| 提出者 | 加尔佩林与里维斯特等 |
| 查找复杂度 | 均摊对数级 |
| 空间开销 | 无额外平衡位 |
| 核心思想 | 失衡子树整体重建 |
替罪羊树(Scapegoat Tree)是一种自平衡二叉搜索树,其特点是不在节点上保存任何额外的平衡信息,而是在操作过程中检测局部失衡,并把导致失衡的祖先节点(即所谓替罪羊节点)整棵子树推倒重建为完美平衡结构。
该结构由阿尔诺·安徒生等人提出,后经加尔佩林与里维斯特系统化命名。它维护一个平衡因子阈值,通常记作阿尔法,取值在二分之一到一之间。整棵树保证每个节点的子树大小不会显著偏离理想的对数深度,从而使查找、插入与删除的均摊时间保持在对数级别。
替罪羊树适合对内存占用敏感的场景,因为它无需为每个节点保存颜色位或高度字段,节省了空间。它也常用于教学,帮助理解均摊分析与重建思想。在需要频繁范围重构或与其他数据结构组合时,其简单的实现逻辑具有优势。
问:替罪羊树和红黑树相比有什么取舍?答:红黑树保证最坏情况对数复杂度且旋转次数少,但需存储颜色位;替罪羊树省去额外字段,实现更直观,但单次重建可能较慢,只保证均摊性能。
问:阿尔法取值如何影响性能?答:阿尔法越接近一,树越松散,重建越少但查找变深;越接近二分之一则树越紧凑,查找快但重建频繁,需在两者间权衡。

| 类型 | 自平衡二叉搜索树 |
| 提出者 | 加尔佩林与里维斯特等 |
| 查找复杂度 | 均摊对数级 |
| 空间开销 | 无额外平衡位 |
| 核心思想 | 失衡子树整体重建 |
登录 后参与讨论
暂无讨论,来发表第一条评论吧