The only call to insert that I see in your main is
bn = bn->insert(num,bn);
But you are dereferencing a null pointer to make the call.
But unless the function is virtual AND the table for the object is part of the object itself, it should call the insert function [yes, that's a BAD thing to do, but you can actually get away with it in many compilers - but yes, it's undefined].
As Laserlight points out, you probably should split the tree and the node from each other.