Один из подходов, который я рассмотрел при рассмотрении аналогичной потребности, заключается в асинхронном построении иерархии, то есть с помощью запросов AJAX.В зависимости от ваших потребностей, это может работать, а может и не работать, но представьте, что вместо немедленного построения целого дерева вы сначала предоставляете пользователю только верхний уровень.Затем, когда пользователь выбирает один из элементов верхнего уровня, делается запрос AJAX, чтобы найти дочерние элементы выбранного элемента.Повторите по мере необходимости для каждого ребенка, чтобы построить дерево.С этой целью проблема очень проста, и запросы и код, используемый для ее реализации, также очень просты.