Tree like structure in views
Maybe you should look at the Views tree module, to see how well it would fit your needs. Here is a quote about the module (from its project page):

... provides a tree-based style plugin for Views.
It is based off of the list style. Although it generates a nested view, there is still only a single query run for the view making it quite performant.