Ctrl K

Самые частые значения в дереве поиска

Лёгкая
Дан корень root двоичного дерева поиска, в котором значения могут повторяться. Порядок в дереве нестрогий: все значения в левом поддереве вершины не больше её значения, все значения в правом — не меньше, и каждое поддерево тоже устроено так же. Найдите значения, которые встречаются в дереве чаще всего. Если таких значений несколько, верните все. Порядок в ответе не важен. Попробуйте обойтись без словаря счётчиков: порядок дерева поиска позволяет считать повторы на ходу (стек рекурсии не в счёт).
Пример 1
root=tree_node([6, 4, 8, 4, 6, None, 8, None, None, None, None, 8]) → [8]

Значение 8 встречается трижды, 4 и 6 — по два раза, так что ответ — только 8.

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

И 1, и 5 встречаются по два раза, а 3 — один раз. Обе самые частые величины попадают в ответ, порядок не важен.

Пример 3
root=tree_node([-7]) → [-7]
Ограничения
  • 1 ≤ число вершин ≤ 10⁴
  • -10⁵ ≤ Node.val ≤ 10⁵
  • Дерево — двоичное дерево поиска в описанном смысле
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиБлижайшее значение в дереве поиска ЛёгкаяПара в дереве поиска ЛёгкаяСамая близкая пара в дереве поиска ЛёгкаяДерево поиска в одну линию ЛёгкаяСумма в полосе дерева поиска Лёгкая
загружаем Python…
Вход
root=tree_node([6, 4, 8, 4, 6, None, 8, None, None, None, None, 8])
Ожидается
[8]

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