#include<stdio.h>
#include<stdlib.h>
typedef struct t
{
int data;
struct t *left;
struct t *right;
}tree;
tree* insert(tree **node, int data)
{
if(!(*node))
{
(*node)->data=data;
(*node)->left=(*node)->right=NULL;
return *node;
}
else
{
if(data>(*node)->data)
{
(*node)->right = insert(&((*node)->right),data);
return *node;
}
else
{
(*node)->left = insert(&((*node)->left),data);
return *node;
}
}
}
void printtree(tree *node)
{
if(node)
{
printtree(node->left);
printtree(node->right);
}
}
void freeMemory(tree *node)
{
if(node)
{
freeMemory(node->left);
freeMemory(node->right);
}
}
int main()
{
tree *NODE = NULL;
NODE= insert(&NODE,5);
NODE= insert(&NODE,3);
NODE= insert(&NODE,8);
printtree(NODE);
freeMemory(NODE);
return 0;
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8c3RkbGliLmg+CnR5cGVkZWYgc3RydWN0IHQKewogICAgaW50IGRhdGE7CiAgICBzdHJ1Y3QgdCAqbGVmdDsKICAgIHN0cnVjdCB0ICpyaWdodDsKfXRyZWU7Cgp0cmVlKiBpbnNlcnQodHJlZSAqKm5vZGUsIGludCBkYXRhKQp7CiAgICBpZighKCpub2RlKSkKICAgIHsKICAgICAgICAqbm9kZT1tYWxsb2Moc2l6ZW9mKHRyZWUpKTsKICAgICAgICAoKm5vZGUpLT5kYXRhPWRhdGE7CiAgICAgICAgKCpub2RlKS0+bGVmdD0oKm5vZGUpLT5yaWdodD1OVUxMOwogICAgICAgIHJldHVybiAqbm9kZTsKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgICBpZihkYXRhPigqbm9kZSktPmRhdGEpCiAgICAgICAgewogICAgICAgICAgICAoKm5vZGUpLT5yaWdodCA9IGluc2VydCgmKCgqbm9kZSktPnJpZ2h0KSxkYXRhKTsKICAgICAgICAgICAgcmV0dXJuICpub2RlOwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgICAoKm5vZGUpLT5sZWZ0ID0gaW5zZXJ0KCYoKCpub2RlKS0+bGVmdCksZGF0YSk7CiAgICAgICAgICAgIHJldHVybiAqbm9kZTsKICAgICAgICB9CiAgICB9Cn0KCnZvaWQgcHJpbnR0cmVlKHRyZWUgKm5vZGUpCnsKICAgIGlmKG5vZGUpCiAgICB7CiAgICAgICAgcHJpbnRmKCIlZCIsbm9kZS0+ZGF0YSk7CiAgICAgICAgcHJpbnR0cmVlKG5vZGUtPmxlZnQpOwogICAgICAgIHByaW50dHJlZShub2RlLT5yaWdodCk7CiAgICB9Cn0KCnZvaWQgZnJlZU1lbW9yeSh0cmVlICpub2RlKQp7CiAgICBpZihub2RlKQogICAgewogICAgICAgIGZyZWVNZW1vcnkobm9kZS0+bGVmdCk7CiAgICAgICAgZnJlZU1lbW9yeShub2RlLT5yaWdodCk7CiAgICAgICAgZnJlZShub2RlKTsKICAgIH0KfQoKaW50IG1haW4oKQp7CiAgICB0cmVlICpOT0RFID0gTlVMTDsKICAgIE5PREU9IGluc2VydCgmTk9ERSw1KTsKICAgIE5PREU9IGluc2VydCgmTk9ERSwzKTsKICAgIE5PREU9IGluc2VydCgmTk9ERSw4KTsKICAgIHByaW50dHJlZShOT0RFKTsKICAgIGZyZWVNZW1vcnkoTk9ERSk7CiAgICByZXR1cm4gMDsKfQo=