很抱歉再次打扰你们,但我有一个问题,我已经好几天没有自己弄清楚了。它是关于treap 的旋转,例如,在pos 处右旋treap。问题是如何链接(或连接)pos->left
到pos
的原始父级?我在网上找到了这段代码,它有效,但我没有看到它是如何解决我的问题的,是因为使用了*&
? 如果是这样,你能帮我解释一下吗?pos=b
这段代码的作用是什么?
void Treap::right_rotate(Node *&pos) {
Node *b = pos->left;
pos->left = b->right;
b->right = pos;
pos = b;
}
提前致谢!!