Performing crossover on trees in genetic algorithm

I’m using genetic algorithm for solving a problem. Each chromosome is a B* tree (where each node has only 2 child nodes).

I’m wondering how to perform the crossover. I found an example which says that crossover points are fixed in parents, at which the tree is sliced, and the child is constructed from sliced sub-trees.

But I know I need to consider more things. Like, what if the child tree is not balanced? Or, what if the child contains duplicate items?

Any advice how I should proceed with these questions in mind? Thanks in advance.