#include<stdio.h>
#include<stdlib.h>
struct tree
{
struct tree *left;
struct tree *right;
int value;
};
typedef struct tree node;
void insertNode(node **root, int val)
{
node *temp = NULL;
if(!(*root))
{
temp
= (node
*) malloc(sizeof(node
)); temp->value = val;
temp->left = NULL;
temp->right = NULL;
*root = temp;
}
if(val < (*root)->value)
insertNode(&(*root)->left, val);
if(val >= (*root)->value)
insertNode(&(*root)->right, val);
}
void preOrder(node *root)
{
if(root)
preOrder(root->left);
preOrder(root->right);
}
}
void inOrder(node *root)
{
if(root)
{
inOrder(root->left);
inOrder(root->right);
}
}
void postOrder(node *root)
{
if(root)
{
postOrder(root->left);
postOrder(root->right);
}
}
void delTree(node *root)
{
if(root)
{
delTree(root->left);
delTree(root->right);
}
}
int main()
{
int val;
char ch; ch = 'y';
node *root;
while(ch == 'y')
{
scanf("Enter the node value: %d", &val
); insertNode(&root, val);
scanf("Want to enter more: %c", &ch
); }
printf("\nInOrder traversal:\n"); inOrder(root);
printf("\nPreOrder traversal:\n"); preOrder(root);
printf("\nPostOrder traversal:\n"); postOrder(root);
delTree(root);
return 0;
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8c3RkbGliLmg+CgpzdHJ1Y3QgdHJlZQp7CiAgICBzdHJ1Y3QgdHJlZSAqbGVmdDsKICAgIHN0cnVjdCB0cmVlICpyaWdodDsKICAgIGludCB2YWx1ZTsKfTsKCnR5cGVkZWYgc3RydWN0IHRyZWUgbm9kZTsKCnZvaWQgaW5zZXJ0Tm9kZShub2RlICoqcm9vdCwgaW50IHZhbCkKewogICAgbm9kZSAqdGVtcCA9IE5VTEw7CiAgICBpZighKCpyb290KSkKICAgIHsKICAgICAgICB0ZW1wID0gKG5vZGUqKSBtYWxsb2Moc2l6ZW9mKG5vZGUpKTsKICAgICAgICB0ZW1wLT52YWx1ZSA9IHZhbDsKICAgICAgICB0ZW1wLT5sZWZ0ID0gTlVMTDsKICAgICAgICB0ZW1wLT5yaWdodCA9IE5VTEw7CiAgICAgICAgKnJvb3QgPSB0ZW1wOwogICAgfQoKICAgIGlmKHZhbCA8ICgqcm9vdCktPnZhbHVlKQogICAgICAgIGluc2VydE5vZGUoJigqcm9vdCktPmxlZnQsIHZhbCk7CgogICAgaWYodmFsID49ICgqcm9vdCktPnZhbHVlKQogICAgICAgIGluc2VydE5vZGUoJigqcm9vdCktPnJpZ2h0LCB2YWwpOwp9Cgp2b2lkIHByZU9yZGVyKG5vZGUgKnJvb3QpCnsKICAgIGlmKHJvb3QpCiAgICB7ICAgcHJpbnRmKCIgJWQiLHJvb3QtPnZhbHVlKTsKICAgICAgICBwcmVPcmRlcihyb290LT5sZWZ0KTsKICAgICAgICBwcmVPcmRlcihyb290LT5yaWdodCk7CiAgICB9Cn0KCnZvaWQgaW5PcmRlcihub2RlICpyb290KQp7CiAgICBpZihyb290KQogICAgewogICAgICAgIGluT3JkZXIocm9vdC0+bGVmdCk7CiAgICAgICAgcHJpbnRmKCIgJWQiLHJvb3QtPnZhbHVlKTsKICAgICAgICBpbk9yZGVyKHJvb3QtPnJpZ2h0KTsKICAgIH0KfQoKdm9pZCBwb3N0T3JkZXIobm9kZSAqcm9vdCkKewogICAgaWYocm9vdCkKICAgIHsKICAgICAgICBwb3N0T3JkZXIocm9vdC0+bGVmdCk7CiAgICAgICAgcG9zdE9yZGVyKHJvb3QtPnJpZ2h0KTsKICAgICAgICBwcmludGYoIiAlZCIscm9vdC0+dmFsdWUpOwogICAgfQp9Cgp2b2lkIGRlbFRyZWUobm9kZSAqcm9vdCkKewogICAgaWYocm9vdCkKICAgIHsKICAgICAgICBkZWxUcmVlKHJvb3QtPmxlZnQpOwogICAgICAgIGRlbFRyZWUocm9vdC0+cmlnaHQpOwogICAgICAgIGZyZWUocm9vdCk7CiAgICB9Cn0KCmludCBtYWluKCkKewogICAgaW50IHZhbDsKICAgIGNoYXIgY2g7IGNoID0gJ3knOwogICAgbm9kZSAqcm9vdDsKCiAgICB3aGlsZShjaCA9PSAneScpCiAgICB7CiAgICAgICAgc2NhbmYoIkVudGVyIHRoZSBub2RlIHZhbHVlOiAlZCIsICZ2YWwpOwogICAgICAgIGluc2VydE5vZGUoJnJvb3QsIHZhbCk7CiAgICAgICAgc2NhbmYoIldhbnQgdG8gZW50ZXIgbW9yZTogJWMiLCAmY2gpOwogICAgfQoKICAgIHByaW50ZigiXG5Jbk9yZGVyIHRyYXZlcnNhbDpcbiIpOwogICAgaW5PcmRlcihyb290KTsKICAgIHByaW50ZigiXG5QcmVPcmRlciB0cmF2ZXJzYWw6XG4iKTsKICAgIHByZU9yZGVyKHJvb3QpOwogICAgcHJpbnRmKCJcblBvc3RPcmRlciB0cmF2ZXJzYWw6XG4iKTsKICAgIHBvc3RPcmRlcihyb290KTsKCiAgICBkZWxUcmVlKHJvb3QpOwogICAgcHJpbnRmKCJUcmVlIERlbGV0ZWQuIik7CgogICAgcmV0dXJuIDA7Cn0K