Было бы предложено использовать список смежности для этого вида операций, так как
- Вам необходимо повторно разделять вершины
- Количество ребер <$ n $ количество вершин. </li>
- Большие преимущества времени выполнения.
Могу ли я узнать, на какую сложность вы смотрите?
Если вас устраивает какая-либо сложность, я бы предложил повторную DFS, поскольку вы работаете с деревом, повторная DFS покроет все ребра и вершины. Время выполнения будет около O (n ^ 2) в худшем случае.