#include <iostream>
using namespace std;
struct Node
{
int a;
Node *l;
Node *r;
};
Node *head = NULL,*term = NULL;
void Insert(int x, Node *p)
{
if (x>(p->a))
{
if (!p->r)
{
Node *k = new Node;
term = p->r = k;
k->a = x;
k->l=p;
k->r=NULL;
}
else Insert(x,p->r);
}
else
{
if (!p->l)
{
Node *k = new Node;
term = p->l = k;
k->a = x;
k->l=NULL;
k->r=p;
}
else
{
Node *k = new Node;
k->a = x;
k->l=p->l;
k->r=p;
p->l->r=k;
p->l=k;
}
}
}
void Insert(int x)
{
if (!head)
{
Node *p = new Node;;
head = term = p;
p->a = x;
p->l=NULL;
p->r=NULL;
}
else Insert(x,head);
}
void Show_1(Node *p)
{
printf("%d ",p->a);
if (p->r) Show_1(p->r);
}
void Show_2(Node *p)
{
printf("%d ",p->a);
if (p->l) Show_2(p->l);
}
void Show_1()
{
if (head) Show_1(head);
}
void Show_2()
{
if (term) Show_2(term);
}
int main()
{
int x;
for (int i=0;i<5;i++) Insert(i);
Show_1();
printf("\n\n");
Show_2();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IE5vZGUKewogICAgaW50IGE7CiAgICBOb2RlICpsOwogICAgTm9kZSAqcjsKfTsKIAogTm9kZSAqaGVhZCA9IE5VTEwsKnRlcm0gPSBOVUxMOwogCiB2b2lkIEluc2VydChpbnQgeCwgTm9kZSAqcCkKIHsKIAlpZiAoeD4ocC0+YSkpCiAgICAgICAgewogICAgICAgICAgICBpZiAoIXAtPnIpIAogICAgICAgICAgICB7CiAgICAgICAgICAgIAlOb2RlICprID0gbmV3IE5vZGU7CiAgICAgICAgICAgIAl0ZXJtID0gcC0+ciA9IGs7CiAgICAgICAgICAgIAlrLT5hID0geDsKICAgICAgICAgICAgCWstPmw9cDsKICAgICAgICAgICAgCWstPnI9TlVMTDsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIEluc2VydCh4LHAtPnIpOwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgIAlpZiAoIXAtPmwpIAogICAgICAgICAgICB7CiAgICAgICAgICAgIAlOb2RlICprID0gbmV3IE5vZGU7CiAgICAgICAgICAgIAl0ZXJtID0gcC0+bCA9IGs7CiAgICAgICAgICAgIAlrLT5hID0geDsKICAgICAgICAgICAgCWstPmw9TlVMTDsKICAgICAgICAgICAgCWstPnI9cDsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgCU5vZGUgKmsgPSBuZXcgTm9kZTsKICAgICAgICAgICAgICAJay0+YSA9IHg7CiAgICAgICAgICAgICAgCWstPmw9cC0+bDsKICAgICAgICAgICAgICAJay0+cj1wOwogICAgICAgICAgICAgIAlwLT5sLT5yPWs7CiAgICAgICAgICAgICAgCXAtPmw9azsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICB9CiB9CiAKIHZvaWQgSW5zZXJ0KGludCB4KQogewogICAgICAgIGlmICghaGVhZCkgCiAgICAgICAgewogICAgICAgIAlOb2RlICpwID0gbmV3IE5vZGU7OwogICAgICAgIAloZWFkID0gdGVybSA9IHA7CiAgICAgICAgCXAtPmEgPSB4OwogICAgICAgIAlwLT5sPU5VTEw7CiAgICAgICAgCXAtPnI9TlVMTDsKICAgICAgICAJCiAgICAgICAgfQogICAgICAgIGVsc2UgSW5zZXJ0KHgsaGVhZCk7CiB9CiAKICB2b2lkIFNob3dfMShOb2RlICpwKQogICAgewogICAgICAgIHByaW50ZigiJWQgIixwLT5hKTsKICAgICAgICBpZiAocC0+cikgU2hvd18xKHAtPnIpOwogICAgfQogICAgdm9pZCBTaG93XzIoTm9kZSAqcCkKICAgIHsKICAgICAgICBwcmludGYoIiVkICIscC0+YSk7CiAgICAgICAgaWYgKHAtPmwpIFNob3dfMihwLT5sKTsKICAgIH0KIAogdm9pZCBTaG93XzEoKSAKICAgIHsKICAgICAgICBpZiAoaGVhZCkgU2hvd18xKGhlYWQpOwogICAgfQogICAgIHZvaWQgU2hvd18yKCkgCiAgICB7CiAgICAgICAgaWYgKHRlcm0pIFNob3dfMih0ZXJtKTsKICAgIH0KCmludCBtYWluKCkgCnsKCWludCB4OwogCiAgICBmb3IgKGludCBpPTA7aTw1O2krKykgSW5zZXJ0KGkpOwogICAgU2hvd18xKCk7CiAgICBwcmludGYoIlxuXG4iKTsKICAgIFNob3dfMigpOwoJcmV0dXJuIDA7Cn0=