Ctrl K

Путь по одинаковым меткам

Средняя
Дан корень root двоичного дерева, в каждой вершине записана целая метка. Найдите самый длинный путь в дереве, все вершины которого имеют одну и ту же метку. Путь может начинаться и заканчиваться в любых вершинах и не обязан проходить через корень; по каждому ребру он идёт не больше одного раза. Верните длину этого пути — количество рёбер в нём. Если дерево пустое, верните 0.
Пример 1
root=tree_node([7, 7, 7, 7, None, 2, 7]) → 4

Путь идёт от левого внука 7 через левого ребёнка и корень к правому ребёнку и дальше к его правому ребёнку: пять вершин с меткой 7, четыре ребра.

Пример 2
root=tree_node([3, 1, 2]) → 0

Все метки разные, поэтому путь состоит из одной вершины и не содержит рёбер.

Пример 3
root=tree_node([]) → 0

В пустом дереве путей нет, ответ 0.

Ограничения
  • 0 ≤ число вершин ≤ 10⁵
  • Глубина дерева не больше 1000
  • -1000 ≤ Node.val ≤ 1000
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиЭто дерево поиска? СредняяДве перепутанные вершины СредняяВсе пути до листьев с заданной суммой СредняяДерево в правую цепочку СредняяСумма чисел на ветвях Средняя
загружаем Python…
Вход
root=tree_node([7, 7, 7, 7, None, 2, 7])
Ожидается
4

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 109 тестов на сервере, включая скрытые.