I'm not sure about best, but one approach I've used in the past is to define a simple object which includes a property which is a collection of the same type as itself - so you can basically chain objects together; think 'nested folders' (a folder may contain multiple child folders).
You can either use that approach as the basis of an object that contains the information you want to collect, or you could farm it out to a flat collection of more detailed objects which simply reference the objects that define the tree structure. The best approach will depend on what your trying to do.
Does that help? what language are you working in?
There are probably a pile of 'proper' design patterns for the problem you trying to solve too.