I was always a fan of the Nested Set (
http://en.wikipedia.org/wiki/Nested_set_model) I combined that with the traditional parent child when I used it for my own antique cms. But the big advantage is that you can order it easily with SQL (ORDER BY left) and it is also efficient for getting subsets or whatever (WHERE left > x AND right < y). I'd say that in your case 1 simple query is required.
The only drawback is the sort of expensive updating of the tree upon insert or any other operation involving moving nodes. But I never had any problems whatsoever with that.
The wikipedia article explains everything, you can decide if it is right for you...
Bookmarks