Дерево задано списком nodes: nodes[i] = [буква, left, right], буквы строчные латинские, left и right — индексы детей или -1. Корень — узел 0.
Две вершины одинаковые, если множество букв в вершине и всех её потомках совпадает (сколько раз буква встречается — не важно).
Верните группы одинаковых вершин размером от двух: индексы внутри группы по возрастанию, группы — по первому индексу.
В работе: Дерево рубрикатора, где в узлах теги: одинаковый набор тегов ниже узла — кандидат на склейку разделов.
Пример 1
nodes = [["a", 1, 2], ["b", 3, -1], ["a", 4, -1], ["a", -1, -1], ["b", -1, -1]]
[[0, 1, 2]]
Поддеревья узлов 0, 1 и 2 содержат {a, b}; узлы 3 и 4 — разные листья.
Пример 2
nodes = [["x", -1, -1]]
[]
Одна вершина — групп нет.
Ограничения
- 1 ≤ длина
nodes≤ 10⁵ - Глубина может достигать 10⁵
- Лимит — 2 с на тест (2000 мс).
print() и console.log() уходят в консоль.
def same_subtrees(nodes):
Источник: Яндекс, Weekend Offer, отчёт кандидата на Хабре, 2025. Условие пересказано своими словами.
Ожидаемый ответ не нужен: покажем, что вернула функция.
Здесь появится результат отправки.