#include <stdio.h>
#include <malloc.h>
struct node{
int val;
struct node *left;
struct node *right;
};
void create(int co, struct node **leaf){
if(*leaf==0){
(*leaf
)=malloc(sizeof(**leaf
)); (*leaf)->val=co;
(*leaf)->left=0;
(*leaf)->right=0;
}
else if(co<(*leaf)->val){
create(co, &(*leaf)->left);
}
else if(co>=(*leaf)->val){
create(co, &(*leaf)->right);
}
}
void traverse(struct node *r)
{
if(r)
{
traverse(r->left);
traverse(r->right);
}
}
int main()
{
struct node *root;
int i;
int f[]={1,2,3,4,5};
int c = sizeof(f)/sizeof(int);
root=0;
for(i=0;i<c;i++){
create(f[i], &root);
}
traverse(root);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxtYWxsb2MuaD4Kc3RydWN0IG5vZGV7CiAgICAgICAgaW50IHZhbDsKICAgICAgICBzdHJ1Y3Qgbm9kZSAqbGVmdDsKICAgICAgICBzdHJ1Y3Qgbm9kZSAqcmlnaHQ7CiAgICAgICAgfTsKICAgICAgICAKdm9pZCBjcmVhdGUoaW50IGNvLCBzdHJ1Y3Qgbm9kZSAqKmxlYWYpewogaWYoKmxlYWY9PTApewogICAoKmxlYWYpPW1hbGxvYyhzaXplb2YoKipsZWFmKSk7CiAgICgqbGVhZiktPnZhbD1jbzsKICAgKCpsZWFmKS0+bGVmdD0wOwogICAoKmxlYWYpLT5yaWdodD0wOwogICB9CiBlbHNlIGlmKGNvPCgqbGVhZiktPnZhbCl7CiAgIGNyZWF0ZShjbywgJigqbGVhZiktPmxlZnQpOwogICB9CiBlbHNlIGlmKGNvPj0oKmxlYWYpLT52YWwpewogICBjcmVhdGUoY28sICYoKmxlYWYpLT5yaWdodCk7CiAgIH0KfQoKdm9pZCB0cmF2ZXJzZShzdHJ1Y3Qgbm9kZSAqcikKewogICAgaWYocikKICAgIHsKICAgICAgICBwcmludGYoIiVkICIsci0+dmFsKTsKICAgICAgICB0cmF2ZXJzZShyLT5sZWZ0KTsKICAgICAgICB0cmF2ZXJzZShyLT5yaWdodCk7CiAgICB9Cn0KaW50IG1haW4oKQp7CiBzdHJ1Y3Qgbm9kZSAqcm9vdDsKIGludCBpOwogaW50IGZbXT17MSwyLDMsNCw1fTsKIGludCBjID0gc2l6ZW9mKGYpL3NpemVvZihpbnQpOwogcm9vdD0wOwogZm9yKGk9MDtpPGM7aSsrKXsKICAgY3JlYXRlKGZbaV0sICZyb290KTsKIH0KIHRyYXZlcnNlKHJvb3QpOwogcmV0dXJuIDA7Cn0K