#include <stdio.h>
#include <stdlib.h>
struct node{
int data;
struct node *left;
struct node *right;
};
struct node* newNode(int num){
struct node
*nnode
= (struct node
*)malloc(sizeof(struct node
)); nnode->data=num;
nnode->left=NULL;
nnode->right=NULL;
return nnode;
}
//print tree
void printTree(struct node *root){
if(root==NULL) return;
printTree(root->left);
printTree(root->right);
}
struct node* insert(struct node *root, int x){
if(root==NULL){
struct node
*nnode
=(struct node
*)malloc(sizeof(struct node
)); nnode->data=x;
nnode->left=NULL;
nnode->right=NULL;
root=nnode;
return root;
}
else{
if(x<root->data) insert(root->left,x);
else insert(root->right,x);
}
}
int main()
{
struct node *root=NULL;
root=insert(root, 5);
struct node* mainroot=root;
root=insert(root, 15);
root=insert(root, 17);
root=insert(root, 2);
printTree(mainroot);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCnN0cnVjdCBub2RlewogICAgaW50IGRhdGE7CiAgICBzdHJ1Y3Qgbm9kZSAqbGVmdDsKICAgIHN0cnVjdCBub2RlICpyaWdodDsKfTsKCnN0cnVjdCBub2RlKiBuZXdOb2RlKGludCBudW0pewogICAgc3RydWN0IG5vZGUgKm5ub2RlID0gKHN0cnVjdCBub2RlKiltYWxsb2Moc2l6ZW9mKHN0cnVjdCBub2RlKSk7CiAgICBubm9kZS0+ZGF0YT1udW07CiAgICBubm9kZS0+bGVmdD1OVUxMOwogICAgbm5vZGUtPnJpZ2h0PU5VTEw7CiAgICByZXR1cm4gbm5vZGU7Cn0KCi8vcHJpbnQgdHJlZQp2b2lkIHByaW50VHJlZShzdHJ1Y3Qgbm9kZSAqcm9vdCl7CiAgICBpZihyb290PT1OVUxMKSByZXR1cm47CiAgICBwcmludGYoIiVkXG4iLHJvb3QtPmRhdGEpOwogICAgcHJpbnRUcmVlKHJvb3QtPmxlZnQpOwogICAgcHJpbnRUcmVlKHJvb3QtPnJpZ2h0KTsKfQoKc3RydWN0IG5vZGUqIGluc2VydChzdHJ1Y3Qgbm9kZSAqcm9vdCwgaW50IHgpewogICAgaWYocm9vdD09TlVMTCl7CiAgICAgICAgc3RydWN0IG5vZGUgKm5ub2RlPShzdHJ1Y3Qgbm9kZSopbWFsbG9jKHNpemVvZihzdHJ1Y3Qgbm9kZSkpOwogICAgbm5vZGUtPmRhdGE9eDsKICAgIG5ub2RlLT5sZWZ0PU5VTEw7CiAgICBubm9kZS0+cmlnaHQ9TlVMTDsKICAgICAgICByb290PW5ub2RlOwogICAgICAgIHJldHVybiByb290OwogICAgfQogICAgZWxzZXsKICAgICAgICBpZih4PHJvb3QtPmRhdGEpIGluc2VydChyb290LT5sZWZ0LHgpOwogICAgICAgIGVsc2UgaW5zZXJ0KHJvb3QtPnJpZ2h0LHgpOwogICAgfQp9CgppbnQgbWFpbigpCnsKICAgIHN0cnVjdCBub2RlICpyb290PU5VTEw7CiAgICByb290PWluc2VydChyb290LCA1KTsKICAgIHN0cnVjdCBub2RlKiBtYWlucm9vdD1yb290OwogICAgcm9vdD1pbnNlcnQocm9vdCwgMTUpOwogICAgcm9vdD1pbnNlcnQocm9vdCwgMTcpOwogICAgcm9vdD1pbnNlcnQocm9vdCwgMik7CiAgICBwcmludFRyZWUobWFpbnJvb3QpOwogICAgcmV0dXJuIDA7Cn0KCg==