Your button click event has nothing to do with "different" items as it is hard coded to take the first child out of the first node remove it and add it to the second node. So I am thinking it is more order of which you press. (once the effect happend it will happen again on Node 0 first child to Node 1, but it may not be present)
Also I would recomend not using the click event but instead use an ICommand interface
] and set the button command path to it using binding
The command should exist at the "TreeViewItemViewModel" for the button "inside" as that is the object type for the collection.
As for the "outside" event you have no knowledge of which item is to move so you are forced to do the hard coding that you have. Not sure what your intentions are exactly but you may want to think about if that makes sence or not.