Ctrl K

Самое большое поддерево поиска

Средняя
Дан корень root двоичного дерева. Поддерево — это вершина вместе со *всеми* её потомками; обрезать ветки нельзя. Поддерево называется деревом поиска, если у каждой его вершины все значения в левой ветке строго меньше её значения, а в правой — строго больше. Верните число вершин в самом большом поддереве, которое является деревом поиска. Для пустого дерева ответ 0. Попробуйте уложиться в O(n).
Пример 1
root=tree_node([12, 6, 20, 2, 9, 15, 11]) → 3

Целиком дерево не подходит: 11 стоит справа от 12. Ветка с корнем 6 (вершины 2, 6, 9) — дерево поиска из 3 вершин; у ветки 20 правый ребёнок 11 меньше 20.

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

Равные значения правило нарушают, поэтому подходит только лист 5 — одна вершина.

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

Дерево пустое, ответ 0.

Ограничения
  • Число вершин — от 0 до 10⁵
  • -10⁴ ≤ Node.val ≤ 10⁴
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСамое тяжёлое поддерево поиска СложнаяСколько форм у дерева поиска СредняяЭто дерево поиска? СредняяДве перепутанные вершины СредняяK-е по величине в дереве поиска Средняя
загружаем Python…
Вход
root=tree_node([12, 6, 20, 2, 9, 15, 11])
Ожидается
3

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