#include<iostream>
using namespace std;
struct node
{
node *left;
node *right;
int data;
};
node *root = new node();
node* find_just_small(node* p)
{
}
void delete_node(int d)
{
node* p = root;
node* q;
if (p == NULL)
{
cout << "root is null" << endl;
return;
}
if (p->data == d)
{
if (p->left == NULL && p->right == NULL)
{
p = NULL;
}
else if (p->left = NULL)
root = p->right;
else
root = p->left;
}
else if (d > p->data)
q = p->right;
else
q = p->left;
while (q)
{
if (d > q->data)
{
p = q;
q = q->right;
}
else if (d < q->data)
{
p = q;
q = q->left;
}
else
break;
}
if (q == NULL)
cout << "Node with key " << d << " does not exist" << endl;
else
{
if (q->left == NULL)
{
}
q = find_just_small(p);
}
}
void insert(int d)
{
node *p = root;
while (p)
{
if (p->data > d)
p = p->left;
else
p = p->right;
}
p = new node();
p->left = NULL;
p->right = NULL;
p->data = d;
}
int main()
{
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
root->left = NULL;
root->right = NULL;
int n, temp;
cin >> n;
for (int i = 0; i < n; i++)
{
cin >> temp;
insert(temp);
}
cin >> n;
for (int i = 0; i < n; i++)
{
cin >> temp;
delete_node(temp);
}
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpzdHJ1Y3Qgbm9kZSAKewoJbm9kZSAqbGVmdDsKCW5vZGUgKnJpZ2h0OwoJaW50IGRhdGE7Cn07Cm5vZGUgKnJvb3QgPSBuZXcgbm9kZSgpOwoKbm9kZSogZmluZF9qdXN0X3NtYWxsKG5vZGUqIHApIAp7CgkKfQoKdm9pZCBkZWxldGVfbm9kZShpbnQgZCkgCnsKCW5vZGUqIHAgPSByb290OwoJbm9kZSogcTsKCWlmIChwID09IE5VTEwpIAoJewoJCWNvdXQgPDwgInJvb3QgaXMgbnVsbCIgPDwgZW5kbDsKCQlyZXR1cm47Cgl9CgoJaWYgKHAtPmRhdGEgPT0gZCkgCgl7CgkJaWYgKHAtPmxlZnQgPT0gTlVMTCAmJiBwLT5yaWdodCA9PSBOVUxMKQoJCXsKCQkJcCA9IE5VTEw7CgkJfQoJCWVsc2UgaWYgKHAtPmxlZnQgPSBOVUxMKQoJCQlyb290ID0gcC0+cmlnaHQ7CgkJZWxzZQoJCQlyb290ID0gcC0+bGVmdDsKCX0KCgllbHNlIGlmIChkID4gcC0+ZGF0YSkKCQlxID0gcC0+cmlnaHQ7CgkKCWVsc2UgCgkJcSA9IHAtPmxlZnQ7CgkKCXdoaWxlIChxKQoJewoKCQlpZiAoZCA+IHEtPmRhdGEpCgkJewoJCQlwID0gcTsKCQkJcSA9IHEtPnJpZ2h0OwoJCX0KCgkJZWxzZSBpZiAoZCA8IHEtPmRhdGEpIAoJCXsKCQkJcCA9IHE7CgkJCXEgPSBxLT5sZWZ0OwoJCX0KCQllbHNlIAoJCQlicmVhazsKCX0KCWlmIChxID09IE5VTEwpCgkJY291dCA8PCAiTm9kZSB3aXRoIGtleSAiIDw8IGQgPDwgIiBkb2VzIG5vdCBleGlzdCIgPDwgZW5kbDsKCWVsc2UgCgl7CgkJaWYgKHEtPmxlZnQgPT0gTlVMTCkgCgkJewoKCgkJfQoJCXEgPSBmaW5kX2p1c3Rfc21hbGwocCk7Cgl9Cn0KCnZvaWQgaW5zZXJ0KGludCBkKSAKewoJbm9kZSAqcCA9IHJvb3Q7Cgl3aGlsZSAocCkKCXsKCQlpZiAocC0+ZGF0YSA+IGQpCgkJCXAgPSBwLT5sZWZ0OwoJCWVsc2UKCQkJcCA9IHAtPnJpZ2h0OwoJfSAKCQoJcCA9IG5ldyBub2RlKCk7CglwLT5sZWZ0ID0gTlVMTDsKCXAtPnJpZ2h0ID0gTlVMTDsKCXAtPmRhdGEgPSBkOwp9CgppbnQgbWFpbigpIAp7CglmcmVvcGVuKCJpbnB1dC50eHQiLCAiciIsIHN0ZGluKTsKCWZyZW9wZW4oIm91dHB1dC50eHQiLCAidyIsIHN0ZG91dCk7CgoJcm9vdC0+bGVmdCA9IE5VTEw7Cglyb290LT5yaWdodCA9IE5VTEw7CgkKCWludCBuLCB0ZW1wOwoJY2luID4+IG47CgoJZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIAoJewoJCWNpbiA+PiB0ZW1wOwoJCWluc2VydCh0ZW1wKTsKCX0KCgljaW4gPj4gbjsKCWZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSAKCXsKCQljaW4gPj4gdGVtcDsKCQlkZWxldGVfbm9kZSh0ZW1wKTsKCX0KCglyZXR1cm4gMDsKfQ==