双层伸展
构思精髓:向上追溯两层,而非一层
反复考察祖孙三代:g = parent(p),p = parent(v),v
根据它们的相对位置,经两次旋转使得 v上升两层,成为(子)树根
节点v的位置的四种可能性
zig-zag / zag-zig
与AVL树双旋完全等效
与逐层伸展别无二致。
颠倒次序后,局部的细微差异,将彻底地改变整体...
折叠效果:一旦访问坏节点,对应路径的长度将随即减半。
最坏情况不致持续发生!
单趟伸展操作,分摊O(logn)时间!
要是v只有父亲,没有祖父呢?
此时必有parent(v) == root(T),且
每轮调整中,这种情况至多(在最后)出现一次
视具体形态,做单词旋转:zig(r)或者zag(r)
508

被折叠的 条评论
为什么被折叠?



