Если вы измените свою таблицу так, чтобы она содержала путь к вершине дерева с разделителями, вам не нужно делать это рекурсивно.
Например, если у вас был путь к дереву, будет "cat_1 | child_2 |grandchild_1 "для узла grandchild_1 дерева, тогда вы сможете разбить строку для загрузки на дерево, а также сможете определить уровень в дереве, на котором вы были.Кроме того, когда вы выбираете из таблицы, вы сможете упорядочить по пути, и дерево получится именно так, как вы хотели его нарисовать.
минус в том, что вам придется поддерживать этот путь при любых изменениях.к дереву.