#include <bits/stdc++.h>
using namespace std;
struct node{
int data;
struct node* left;
struct node* right;
};
typedef struct node* Node;
Node insert(Node root, int num){
if(root==NULL){
Node newNode=(Node)malloc(sizeof(Node));
newNode->data=num;
newNode->left=NULL;
newNode->right=NULL;
return newNode;
}
if(root->data>num)
root->left=insert(root->left,num);
else
root->right=insert(root->right,num);
return root;
}
void printinorder(Node root){
if(root==NULL)
return;
printinorder(root->left);
cout<<root->data<<endl;
printinorder(root->right);
}
int main(){
Node tree=NULL;
tree=insert(tree,1);
tree=insert(tree,2);
tree=insert(tree,3);
tree=insert(tree,4);
tree=insert(tree,5);
tree=insert(tree,6);
tree=insert(tree,7);
printinorder(tree);
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpzdHJ1Y3Qgbm9kZXsKICAgIGludCBkYXRhOwogICAgc3RydWN0IG5vZGUqIGxlZnQ7CiAgICBzdHJ1Y3Qgbm9kZSogcmlnaHQ7Cn07Cgp0eXBlZGVmIHN0cnVjdCBub2RlKiBOb2RlOwoKCk5vZGUgaW5zZXJ0KE5vZGUgcm9vdCwgaW50IG51bSl7CiAgICBpZihyb290PT1OVUxMKXsKICAgICAgICBOb2RlIG5ld05vZGU9KE5vZGUpbWFsbG9jKHNpemVvZihOb2RlKSk7CiAgICAgICAgbmV3Tm9kZS0+ZGF0YT1udW07CiAgICAgICAgbmV3Tm9kZS0+bGVmdD1OVUxMOwogICAgICAgIG5ld05vZGUtPnJpZ2h0PU5VTEw7CiAgICAgICAgcmV0dXJuIG5ld05vZGU7CiAgICB9CgogICAgaWYocm9vdC0+ZGF0YT5udW0pCiAgICAgICAgcm9vdC0+bGVmdD1pbnNlcnQocm9vdC0+bGVmdCxudW0pOwogICAgZWxzZQogICAgICAgIHJvb3QtPnJpZ2h0PWluc2VydChyb290LT5yaWdodCxudW0pOwogICAgcmV0dXJuIHJvb3Q7Cn0KCnZvaWQgcHJpbnRpbm9yZGVyKE5vZGUgcm9vdCl7CiAgICBpZihyb290PT1OVUxMKQogICAgICAgIHJldHVybjsKCiAgICBwcmludGlub3JkZXIocm9vdC0+bGVmdCk7CiAgICBjb3V0PDxyb290LT5kYXRhPDxlbmRsOwogICAgcHJpbnRpbm9yZGVyKHJvb3QtPnJpZ2h0KTsKfQoKCgoKCmludCBtYWluKCl7CgogICAgTm9kZSB0cmVlPU5VTEw7CiAgICB0cmVlPWluc2VydCh0cmVlLDEpOwogICAgdHJlZT1pbnNlcnQodHJlZSwyKTsKICAgIHRyZWU9aW5zZXJ0KHRyZWUsMyk7CiAgICB0cmVlPWluc2VydCh0cmVlLDQpOwogICAgdHJlZT1pbnNlcnQodHJlZSw1KTsKICAgIHRyZWU9aW5zZXJ0KHRyZWUsNik7CiAgICB0cmVlPWluc2VydCh0cmVlLDcpOwogICAgcHJpbnRpbm9yZGVyKHRyZWUpOwoKCn0K