### 合并(merge)
-合并过程接受两个参数:左 treap 的根指针 $u$ 、右 treap 的根指针 $v$ 。必须满足 $u$ 中所有结点的关键值小于等于 $v$ 中左右结点的关键值。因为两个 treap 已经有序,我们只需要考虑 $priority$ 来决定哪个 treap 应与另一个 treap 的儿子合并。若 $u$ 的根结点的 $priority$ 大于 $v$ 的,那么 $u$ 即为新根结点, $v$ 应与 $u$ 的右子树合并;反之,则 $v$ 作为新根结点,然后让 $u$ 与 $v$ 的左子树合并。不难发现,这样合并所得的树依然满足 $priority$ 的大根堆性质。
+合并过程接受两个参数:左 treap 的根指针 $u$ 、右 treap 的根指针 $v$ 。必须满足 $u$ 中所有结点的关键值小于等于 $v$ 中所有结点的关键值。因为两个 treap 已经有序,我们只需要考虑 $priority$ 来决定哪个 treap 应与另一个 treap 的儿子合并。若 $u$ 的根结点的 $priority$ 大于 $v$ 的,那么 $u$ 即为新根结点, $v$ 应与 $u$ 的右子树合并;反之,则 $v$ 作为新根结点,然后让 $u$ 与 $v$ 的左子树合并。不难发现,这样合并所得的树依然满足 $priority$ 的大根堆性质。
```cpp
node *merge(node *u, node *v) {