You have child nodes (Node) as value, not reference. So you add node 2 to node 1:
node1 -> node2
Then you add node3 to node2:
node2 -> node3
But since you have nodes by value, you never added node3 to the copy of node2 attached to node1, only to the node2 that is in the original array.
Change the declaration to: