With the structures defined, all of the evaluation and manipulation
routines are now simply handled by standard recursion routines. All
of the subtree swapping associated with crossover become simple
pointer manipulation. The only pitfall to speak of is the memory
allocation calls must be made with the utmost care. The code is
included at the end of the paper.