e.g

```
Tree 1: Tree 2:
A B
/ \ / \
B C D E
/ | / \ \
D ... C F G
Union:
A
/ \
B C
/ \ |
D E ...
/ \ \
C F G
```

The union of the two trees should be returned if there is an overlap. We don't know which tree might be a subtree of the other. The result should be a new tree [inputs should not be modified]

I proposed a recursive solution which would work if we knew that Tree2 could be a subtree of the other. If this is not assumed how do I go about it ?