BinarySearchTree: added make_node function

Allocate memory and initialize links to NULL.
BinarySearchTree: added iterate insertion function

The point is: when adding new nodes, the link[] needs to be
updated, not the node itself. the while(1) loop is used
instead of while(node), since after node get updated and
tested as NULL, there is no way to go back to its parent
and update the parent's link[dir], this is a pitfall.
BinarySearchTree: added recursive insertion function

Well, the point is still what we update,
i.e. root->link[dir].