1. the line
tree1->findOWN(new Student("",12105092))->merge(s1);
creates a memory leak, as the function argument is created on the heap, but never deleted. 2. your function CTree::TCompare compares objects of type Student using
operator<(const Student&, const Student&)
Did you define that operator? If not, the result of these comparisons are undefined. If you did, the error may be within the code of that operator definition.
GOTOs are a bit like wire coat hangers: they tend to breed in the darkness, such that where there once were few, eventually there are many, and the program's architecture collapses beneath them. (Fran Poretto)