#include <stdio.h>
#include <stdlib.h>
// node structure
typedef struct node2 {
int number;
struct node2 *left;
struct node2 *right;
} node2;
// a function to create a new leaf node (node2)
node2*
createnode (int data) {
node2* newnode = (node2*) calloc (1, sizeof(node2));
newnode->number = data;
newnode->left = NULL;
newnode->right = NULL;
return (newnode);
}
// insertion recursive function
node2* insert (node2* root, int data)
{
// if tree empty, insert a first node
if (root == NULL) {root = createnode (data); return (root);}
// if value smaller, put into left subtree
if (data < root->number)
root->left = insert (root->left, data);
// if value larger, put into right subtree
else if (data > root->number)
root->right = insert (root->right, data);
// if value equal, duplicate key, do nothing
return (root);
}
// in-order traversal recursive function
void
inorder (node2* root)
{
if (root != NULL)
{
inorder (root->left); // visit left subtree
printf("%d ", root->number); // print current node
inorder (root->right); // visit right subtree
}
}
int
main (void) {
node2* root;
root = NULL;
// inserting the nodes into the tree
root = insert(root, 40);
insert (root, 20);
insert (root, 10);
insert (root, 50);
insert (root, 65);
insert (root, 45);
insert (root, 30);
printf ("In-Order traversal: ");
inorder (root);
printf ("\n");
return (0);
}