ответ дерево-не дерево, связанный список.
Каждый пункт меню имеет ссылки на соседа справа-слева (на одном уровне меню), плюс ссылку на уровень вверх, плюс ссылку на уровень вниз (если есть субменю).
Тогда, если в начальный момент времени есть один блок, то на самом верхнем уровне будет только один пункт меню Блок1, у которого ссылки на соседей слева-справа указывают на него же самого. Т.е. нет соседей.
Добавляешь второй блок. Ссылка на соседа справа в пункте Блок1 теперь указывает на пункт меню Блок2. А в Блок2 ссылка на соседа слева указывает на Блок1. Все - связь между ними установлена. При брожении юзера по меню он сможет выбрать один из блоков.
И т.д.