Built the tree and calculated the max depth, made a wrapper function
for the gernerateTree function, created the gereateRandom node method
and started the crossover
tentatively finished up findReplaceNode, however there is an issue of
copying but not being able to modify the node. Otherwise, algorithm is
almost finished.