锦标赛树

一般用于多路归并

胜者树

叶子节点为数据,每层取最大值,直到到达根,根即为最大值。

  • 时间初始化 可以用来完成选择排序
  • 每次从根下溯到原叶子节点
  • 删去这个节点,逐层上溯更新到根,此时得到次大值
  • 每次删去和更新
  • 适合用于实现不完全选取:取前 k 大的数。常系数比堆更小,渐近复杂度和堆相同

败者树

内部节点记录每场比赛的败者,需额外记录最终的胜者。 每次更新时,只需和父亲进行比较并更新即可,败者留下,胜者继续向上。

胜者树 vs 败者树

  • 胜者树:从叶子节点到根的路径上每次需要访问兄弟节点和父节点,访存次数较多
  • 败者树:每层只需访问父节点,访存次数少