#include <stdio.h>
#include <stdlib.h>
//data struct for BST node
typedef struct BST
{
int data;
struct BST *left;
struct BST *right;
}node;
//make node from given data
node* makeNode(int data)
{
node
*n
=(node
*)malloc(sizeof(node
)); n->data=data;
n->left=NULL;
n->right=NULL;
return n;
}
//insert node in BST
node* insert(node* root,int key)
{
if(root==NULL)
return makeNode(key);
if(key < root->data)
root->left=insert(root->left,key);
else
root->right=insert(root->right,key);
return root;
}
//inorder printing prints in sorted order
void inorder(node* root)
{
if(root==NULL)
return;
inorder(root->left);
inorder(root->right);
}
//preorder printing
void preorder(node* root)
{
if(root==NULL)
return;
preorder(root->left);
preorder(root->right);
}
//postorder printing
void postorder(node* root)
{
if(root==NULL)
return;
postorder(root->left);
postorder(root->right);
}
//search key in tree
node *search(node *root, int key)
{
node *t=NULL;
if(root==NULL) //check if tree is empty
t = NULL;
else if(root->data==key) //key exists at current node
t = root;
else if(key < root->data) //key in left subtree
t = search(root->left,key);
else
t = search(root->right,key); //key in right subtree
return t;
}
//driver function
int main(void) {
// your code goes here
node *root=NULL;
int s,i,key;
//while(s--)
for(i=0;i<s;i++)
{
root=insert(root,key);
}
node* result=search(root,1);
if(result==NULL)
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCi8vZGF0YSBzdHJ1Y3QgZm9yIEJTVCBub2RlCnR5cGVkZWYgc3RydWN0IEJTVAp7CglpbnQgZGF0YTsKCXN0cnVjdCBCU1QgKmxlZnQ7CglzdHJ1Y3QgQlNUICpyaWdodDsKfW5vZGU7CgovL21ha2Ugbm9kZSBmcm9tIGdpdmVuIGRhdGEKbm9kZSogbWFrZU5vZGUoaW50IGRhdGEpCnsKCW5vZGUgKm49KG5vZGUqKW1hbGxvYyhzaXplb2Yobm9kZSkpOwoJbi0+ZGF0YT1kYXRhOwoJbi0+bGVmdD1OVUxMOwoJbi0+cmlnaHQ9TlVMTDsKCQoJcmV0dXJuIG47Cn0KCi8vaW5zZXJ0IG5vZGUgaW4gQlNUCm5vZGUqIGluc2VydChub2RlKiByb290LGludCBrZXkpCnsKCWlmKHJvb3Q9PU5VTEwpCgkJcmV0dXJuIG1ha2VOb2RlKGtleSk7CgkJCglpZihrZXkgPCByb290LT5kYXRhKQoJCXJvb3QtPmxlZnQ9aW5zZXJ0KHJvb3QtPmxlZnQsa2V5KTsKCWVsc2UKCQlyb290LT5yaWdodD1pbnNlcnQocm9vdC0+cmlnaHQsa2V5KTsKCQkKCXJldHVybiByb290Owp9CgovL2lub3JkZXIgcHJpbnRpbmcgcHJpbnRzIGluIHNvcnRlZCBvcmRlcgp2b2lkIGlub3JkZXIobm9kZSogcm9vdCkKewoJaWYocm9vdD09TlVMTCkKCQlyZXR1cm47CgkJCglpbm9yZGVyKHJvb3QtPmxlZnQpOwoJcHJpbnRmKCIlZCAiLHJvb3QtPmRhdGEpOwoJaW5vcmRlcihyb290LT5yaWdodCk7Cn0KCi8vcHJlb3JkZXIgcHJpbnRpbmcKdm9pZCBwcmVvcmRlcihub2RlKiByb290KQp7CglpZihyb290PT1OVUxMKQoJCXJldHVybjsKCXByaW50ZigiJWQgIixyb290LT5kYXRhKTsKCXByZW9yZGVyKHJvb3QtPmxlZnQpOwoJcHJlb3JkZXIocm9vdC0+cmlnaHQpOwp9CgovL3Bvc3RvcmRlciBwcmludGluZwp2b2lkIHBvc3RvcmRlcihub2RlKiByb290KQp7CglpZihyb290PT1OVUxMKQoJCXJldHVybjsKCXBvc3RvcmRlcihyb290LT5sZWZ0KTsKCXBvc3RvcmRlcihyb290LT5yaWdodCk7CglwcmludGYoIiVkICIscm9vdC0+ZGF0YSk7Cn0KCi8vc2VhcmNoIGtleSBpbiB0cmVlCm5vZGUgKnNlYXJjaChub2RlICpyb290LCBpbnQga2V5KQp7Cglub2RlICp0PU5VTEw7CgkKCWlmKHJvb3Q9PU5VTEwpCS8vY2hlY2sgaWYgdHJlZSBpcyBlbXB0eQoJCXQgPSBOVUxMOwoJZWxzZSBpZihyb290LT5kYXRhPT1rZXkpCS8va2V5IGV4aXN0cyBhdCBjdXJyZW50IG5vZGUKCQl0ID0gcm9vdDsKCWVsc2UgaWYoa2V5IDwgcm9vdC0+ZGF0YSkJLy9rZXkgaW4gbGVmdCBzdWJ0cmVlCgkJdCA9IHNlYXJjaChyb290LT5sZWZ0LGtleSk7CgllbHNlCgkJdCA9IHNlYXJjaChyb290LT5yaWdodCxrZXkpOwkvL2tleSBpbiByaWdodCBzdWJ0cmVlCgkJCglyZXR1cm4gdDsKfQoKLy9kcml2ZXIgZnVuY3Rpb24KaW50IG1haW4odm9pZCkgewoJLy8geW91ciBjb2RlIGdvZXMgaGVyZQoJbm9kZSAqcm9vdD1OVUxMOwoJaW50IHMsaSxrZXk7CglzY2FuZigiJWQiLCZzKTsKCS8vd2hpbGUocy0tKQoJZm9yKGk9MDtpPHM7aSsrKQoJewoJCXNjYW5mKCIlZCIsJmtleSk7CgkJcm9vdD1pbnNlcnQocm9vdCxrZXkpOwoJfQoJbm9kZSogcmVzdWx0PXNlYXJjaChyb290LDEpOwoJaWYocmVzdWx0PT1OVUxMKQoJCXByaW50ZigiTm90IGZvdW5kXG4iKTsKCWVsc2UgcHJpbnRmKCJGb3VuZFxuIik7CglyZXR1cm4gMDsKfQo=