 <p>Adding a ParentNode property to each node is "not really that bad". In fact, it's rather common. Apparently you didn't add that property because you didn't need it originally. Now you need it, so you have good reason to add it.</p> <p>Alternates include: </p> <ul> <li>Writing a function to find the parent of a child, which is processor intensive.</li> <li>Adding a separate class of some sort which will cache parent-child relationships, which is a total waste of effort and memory.</li> </ul> <p>Essentially, adding that one pointer into an existing class is a choice to use memory to cache the parent value instead of using processor time to find it. That appears to be a good choice in this situation.</p>