Я делаю некоторые DOM-манипуляции с текстовыми элементами (текстовый узел, p, span, b, i и т. Д.), Где проблема может быть сформулирована следующим образом:
При заданном дереве началолист и конечный лист, разделите это дерево на 3 части:
- одна часть состоит из всего, что находится слева от начального узла
- одна часть состоит из всего, что находится между начальным узлом иконечный узел (включительно)
- одна часть состоит из всего, что находится справа от конечного узла
Обратите внимание, что здесь левый и правый относится к обходу предварительного заказа по дереву.
Узлы на дереве могут дублироваться для разделения при необходимости
Так, например, если у меня есть следующее дерево:
где J - начальный лист, а G - конечный лист, тогда после разбиения результат будет следующим:
Как я могудостичь этого?Я знаю, что это, вероятно, потребует обхода слева направо с использованием обхода предварительного заказа / DFS, но я не уверен, как построить новые поддеревья.