Ok, I think I now get what you are asking for.
Your breadth-first implementation is correct.
A binary tree is a sort of "self-contained" structure. You start with the root, called A, with two references to two other binary trees, "left" and "right"
You start from:
A
/ \
B C
/
D
and add a binary tree, E as right subtree of B:
A
/ \
B C
/ \
D E
Your implementation, as it is, returns a subtree, "B", which is where the new subtree has been appended. I am not sure what BinaryTree implementation you are using, but I expect the:
"B".attachRight("E");
to modify the original tree, so the "new" tree with the node appended is still the one starting with "A"- ie you do not have to return anything! I do not know if your implementation keeps track of the "parent", if yes you can traverse the parents hierarchy starting from "B" until you find a node where the parent is null - the root ("a" again)
The answer you want after calling addToTree(BinaryTree t1, BinaryTree t2) is "t1", the "A" rooted tree you passed as first argument.