#include<stdio.h>
#include<stdlib.h>
struct node
{
int data;
struct node* left;
struct node* right;
};
void insert(struct node* add,int data)
{
struct node
* temp
=(struct node
*)malloc(sizeof(struct node
)); temp->data=data;
temp->left=NULL;
temp->right=NULL;
if(add==NULL)
{
add=temp;
return;
}
if(data <= add->data)
{
insert(add->left,data);
}
else
{
insert(add->right,data);
}
return;
}
void traversal(struct node* root)
{
while(root)
{
traversal(root->right);
traversal(root->left);
}
return;
}
void main()
{
int n;
struct node* root=NULL;
while(n--)
{
int data;
insert(root,data);
}
traversal(root);
return;
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8c3RkbGliLmg+CgpzdHJ1Y3Qgbm9kZQp7CiAgaW50IGRhdGE7CiAgc3RydWN0IG5vZGUqIGxlZnQ7CiAgc3RydWN0IG5vZGUqIHJpZ2h0Owp9OwoKdm9pZCBpbnNlcnQoc3RydWN0IG5vZGUqIGFkZCxpbnQgZGF0YSkKewogIHN0cnVjdCBub2RlKiB0ZW1wPShzdHJ1Y3Qgbm9kZSopbWFsbG9jKHNpemVvZihzdHJ1Y3Qgbm9kZSkpOwogIHRlbXAtPmRhdGE9ZGF0YTsKICB0ZW1wLT5sZWZ0PU5VTEw7CiAgdGVtcC0+cmlnaHQ9TlVMTDsKICBpZihhZGQ9PU5VTEwpCiAgewogICAgIGFkZD10ZW1wOwogICAgIHJldHVybjsKICB9CiAgaWYoZGF0YSA8PSBhZGQtPmRhdGEpCiAgewogICAgIGluc2VydChhZGQtPmxlZnQsZGF0YSk7IAogIH0KICBlbHNlCiAgewogICAgIGluc2VydChhZGQtPnJpZ2h0LGRhdGEpOwogIH0KICByZXR1cm47CiAgCn0KIAp2b2lkIHRyYXZlcnNhbChzdHJ1Y3Qgbm9kZSogcm9vdCkKewogICB3aGlsZShyb290KQogICB7IAogICAgICB0cmF2ZXJzYWwocm9vdC0+cmlnaHQpOwogICAgICBwcmludGYoIiVkXG4iLHJvb3QtPmRhdGEpOwogICAgICB0cmF2ZXJzYWwocm9vdC0+bGVmdCk7CiAgIH0KICAgcmV0dXJuOwp9CgoKCnZvaWQgbWFpbigpCnsKICBpbnQgbjsKICBzdHJ1Y3Qgbm9kZSogcm9vdD1OVUxMOwogIHNjYW5mKCIlZCIsJm4pOwogIHdoaWxlKG4tLSkKICB7IAogICAgaW50IGRhdGE7CiAgICBzY2FuZigiJWQiLCZkYXRhKTsKICAgIGluc2VydChyb290LGRhdGEpOwogIH0KICB0cmF2ZXJzYWwocm9vdCk7CiAgcmV0dXJuOwogIAp9