[关闭]
@zhangche0526 2017-03-25T08:11:03.000000Z 字数 491 阅读 983

Splay Tree

是什么?

相信大家之前都用过 BST (Binary Search Tree , 二叉排序树)

复习一下 BST 的概念:

BST 或是一棵空树;或者是具有下列性质的二叉树:

理想情况下 BST 的时间复杂度为 ,但是如果 BST 建得不好,其有可能退化成一条链,这样时间复杂度就成 ,实在是前功尽弃。

BBST (Self-balancing binary search tree , 平衡树)就应运而生了。

常见的 BBST 有:Treap, Splay, AVL, RBT, SBT

今天我们讲的是其中的 Splay.

为什么?

选择 Splay 的原因主要是它编程难度低(相对而言,依然有250+行)、功能十分强大,几乎能实现 BBST 的所有功能。可谓“麻雀虽小五脏俱全”,是一个性价比很高的数据结构。

怎么做?

基本概念

理解概念十分重要(注重概念理解不意味着重蹈 kigo 的覆辙),下面来简述一下基本概念:

  1. ZIG (左旋) , ZAG( 右旋)
    zigzag

process
2. Splay (伸展)

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注