I keep running into the same dilemma when Im programming, take for example a simple class Map and another class called Tree. On each map there are numerous trees, which would be more appropriate, the Map class containing an array of Tree instances or each Tree object to contain a reference to the Map object it belongs too, or even both?
Another example is if a parent should have children or should the children have a parent
I'd say there's no hard and fast rule - it all depends on your use cases. In which direction do you need to navigate the relationship? Store the references to support this. And if you need to be able to navigate it in both directions, then have both objects store the reference.
Of course, if it's bidirectional you've got to make sure it stays consistent, and in that case I'd recommend giving one end of the relationship responsibility for managing both ends. For instance, parent.addChild(child) would call child.setParent(this), and other classes should only ever manipulate the link via parent.