changing insert_node by adding 3 printf's
Code:
bool insert_node(Bin_Node **root, Bin_Node *node)
{
if (!*root) //parent node has no children??
{
printf("at end of line so add node %d\n", node->data);
*root = node;
return true;
}
else
{
if ((*root)->data < node->data) //the data of the parent we are looking at is less than the data of the node so go to its right child
{
printf("root data is %d < node data %d so go right\n", (*root)->data, node->data);
return insert_node(&(*root)->right, node);
}
else if ((*root)->data != node->data)
{
printf("root data is %d > node data %d so go left\n", (*root)->data, node->data);
return insert_node(&(*root)->left, node);
}
}
return false; // the node already existed
}
i get the following output
Code:
at end of line so add node 20
node inserted
root data is 20 > node data 6 so go left
at end of line so add node 6
node inserted
root data is 20 > node data 3 so go left
root data is 6 > node data 3 so go left
at end of line so add node 3
node inserted
root data is 20 > node data 9 so go left
root data is 6 < node data 9 so go right
at end of line so add node 9
node inserted
root data is 20 > node data 2 so go left
root data is 6 > node data 2 so go left
root data is 3 > node data 2 so go left
at end of line so add node 2
node inserted
root data is 20 > node data 13 so go left
root data is 6 < node data 13 so go right
root data is 9 < node data 13 so go right
at end of line so add node 13
node inserted
root data is 20 < node data 54 so go right
at end of line so add node 54
node inserted
root data is 20 > node data 10 so go left
root data is 6 < node data 10 so go right
root data is 9 < node data 10 so go right
root data is 13 > node data 10 so go left
at end of line so add node 10
node inserted
root data is 20 < node data 43 so go right
root data is 54 > node data 43 so go left
at end of line so add node 43
node inserted
so clearly the insert node function is working.