Not sure what your question is. A bookmark list and a bookmark file are flat lists - they are not trees.
But you can have a bookmark that itself points to a set of bookmarks. There are a couple of ways you can do this.
You can bookmark a bookmark file, so that "jumping" to that bookmark loads that bookmark file. If you use C-u
when you do that then you switch to that bookmark file (i.e., only its bookmarks). Otherwise, you add its bookmarks to the current list of bookmarks.
You can bookmark a bookmark list, that is, a particular state of the bookmark-list display - what you see in buffer *Bookmark List*
. This means bookmarking a particular view of a set of bookmarks. That view is a sorted, filtered, etc. subset of the bookmarks that are current. When you "jump" to a bookmark-list bookmark the display is updated to show the view that was saved in the bookmark.
If you like, you can think of a bookmark file, some of whose bookmarks are themselves bookmark-file bookmarks, as being a bookmark tree. Think of each bookmark in the tree as being either a node (a bookmark-file bookmark) or a leaf (an ordinary bookmark). Similarly for bookmark-list bookmarks.
There are also other ways to define sets of bookmarks than using bookmark files or bookmark-list displays. In particular, tags let you define any number of sets of bookmarks. You can show or access the bookmarks that have whatever combination of tags you like. And you can of course create bookmark files or bookmark lists from such a set (e.g., you can make a bookmark file from all bookmarks that have a certain set of tags).
So while you don't literally have bookmark trees, in the sense of a Lisp-list tree, you do have various ways of defining and using different sets of bookmarks. And at least for bookmark files and bookmark lists you can encapsulate such a set in a single bookmark. (Similarly for sets of bookmarks defined using Dired markings.)