TGViewer
Библиотека питониста | Python, Django, Flask Библиотека питониста | Python, Django, Flask @pyproglib · 37.4K subscribers
Post #7745 1.76K
😱 Как правильно валидировать BST на Python (и не завалить интервью)

Задача Validate Binary Search Tree — одна из тех, что регулярно всплывают на coding interviews. И большинство кандидатов сначала решают её неправильно.

Типичная ошибка — проверять только родителя:

if node.left and node.left.val >= node.val:
return False


Проблема в том, что в BST ограничения наследуются от всех предков, а не только от текущего узла.

Например, вот это дерево невалидно:

10
/ \
5 15
/ \
6 20


Потому что 6 находится справа от 10, а значит должно быть больше 10, даже если 6 < 15.

Самый сильный и interview-friendly подход — min/max bounds pattern.

Идея простая:
- root начинается с диапазона (-∞, +∞)
- при движении влево текущий node становится верхней границей
- при движении вправо — нижней границей
- каждый узел должен удовлетворять:

min < node.val < max

Python-решение:

def is_valid_bst(root):
def validate(node, min_val, max_val):
if not node:
return True

if node.val <= min_val or node.val >= max_val:
return False

return (
validate(node.left, min_val, node.val)
and validate(node.right, node.val, max_val)
)

return validate(root, float("-inf"), float("inf"))


Почему этот подход любят на интервью:
- показывает понимание BST invariant
- O(n) по времени
- O(h) по памяти (stack depth)
- легко объяснить вслух интервьюеру

Частые edge cases, про которые забывают:
• пустое дерево → True
• один node → True
• duplicate values → обычно invalid BST
• extreme integer values → в Java/C# лучше использовать Long, а не Integer

Какую binary tree задачу вам чаще всего давали на интервью?

📍 Навигация: ВакансииЗадачиСобесы

Библиотека питониста

#буст
  • 👍 4
  • ❤ 2
  • 🔥 2
More from @pyproglib
  1. Sep 20, 2026👻 94% токенов уходят не на код Анализ запусков показал: основная часть токенов уходит на…
  2. Sep 19, 2026📚Напоминаем про наш полный курс «Самоучитель по Python для начинающих» Мы написали и собр…
  3. Sep 15, 2026😭 Как не потратить недельный лимит AI-кодинга за три дня? Разберём на вебинаре, как трати…
  4. Sep 15, 2026⏱️ Справочник по Big-O в Python Для тех, кто хочет писать не просто работающий, а эффектив…
  5. Sep 14, 2026🤪 Если бы можно было задать один вопрос про AI в разработке — что бы вы спросили? Как выб…
  6. Sep 13, 2026🌸 Вселенная намекает: пора уже начать этот курс С 14 сентября цены в Proglib Academy выра…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →