Advertisement
Guest User

Untitled

a guest
May 6th, 2016
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.64 KB | None | 0 0
  1. void access(splay_node *n)
  2. {
  3. splay_node *x = n, *y = splay_node::nul;
  4. while (x != splay_node::nul)
  5. {
  6. // 把x旋转到它所在splay的根
  7. // 这样x的右子树中所有结点都在原图中比它深
  8. // 左子树中所有节点都比它浅
  9. x->splay();
  10.  
  11. // 把x的右子树改成以y为根的子树
  12. // 这样相当于在原图中把x的“prefered child”
  13. // 改为y所在的splay代表的“prefered path”中深度最小的结点
  14. x->r = y;
  15.  
  16. // 因为x的子结点改变了
  17. // 所以如果在splay中维护了信息的话
  18. // 需要重新计算x中记录的信息
  19. // x->maintain();
  20.  
  21. y = x;
  22. x = x->p;
  23. }
  24. n->splay();
  25. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement