one option if you don’t want to travel down the hierarchical data-set path, is to use a Nested Set (http://en.wikipedia.org/wiki/Nested_set_model). this allows you to store the entire collection in a single array (or list or whatever you want to call it) and use a “left” and “right” value to determine the structure and hierarchy of the list.
if i remember right, this technique was originally build to optimize data storage and queries in a relational database. however, i’ve used it a number of times in C#/Winforms applications, to avoid having a recursive hierarchy of data, and it worked well.
an implementation of this in javascript should be pretty easy, but i don’t know how well it would perform with a large list.