Я реализовывал так: на каждом уровне выводил не более 50 элементов, если элементов более 50, то 51м выводил фиктивный элемент [загрузить ещё]. Потенциально, если требуемый элемент на уровне последний, а элементов очень много, то получается неудобная догрузка порциями, а в конце концов выходит то же самое тормозное дерево. Чтобы решить эту проблему можно сделать фильтрацию дерева.