@cooper1200,
There is no spoon (from "The Matrix").
In other words, there is no tr. I know, you have one, it's Bin_Tree, but look at your insert_node. It takes a Bin_Node **. Inside insert_node, there is no tr, no Bin_Tree.
You don't need it.
Bin_Tree has a root, I know.
When you call insert_node, you call that from insert (where you do have Bin_Tree). But look at that call.
Code:
insert_node( &root, node );
Actually, that's a mistake. It shouldn't be the temporary Bin_Node *root;
That call should be
Code:
insert_node( &( tree->root ), node );
I had not noticed that before. Actually, I recall mentioning it, but never mind...it should be changed to the tree->root, not root.
Now, look at the insert_node signature:
Code:
bool insert_node( Bin_Node ** root, Bin_Node *node )....
root is a pointer to a pointer, which is modified with something like
*root = node;
Or whatever context is appropriate. That will assign Bin_Tree's node. Insert_Node has (or will have when you fix that as I pointed out) Bin_Tree's root.
Via pointer to a pointer (the **)