中级农民
- 积分
- 138
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2016-9-7
- 最后登录
- 1970-1-1
|
Thanks to LZ. I used bottom-up recursion to save temporary pointers.
- void insertBST(Node* r, Node* x) {
- if (!r || !x) return;
- if (x->val < r->val)
- if (r->left) r = r->left;
- else insertBST(r->left, x);
- else if (r->right) r = r->right;
- else insertBST(r->right, x);
- }
- void mergeBST(Node* r1, Node* r2) {
- if (!r2) return;
- mergeBST(r1, r2->left), mergeBST(r1, r2->right);
- r2->left = r2->right = nullptr;
- insertBST(r1, r2);
- }
复制代码 |
|