Files
obsidian/АиСД/Задачи/LeetCode/Validate Binary Search Tree.md
T
roma-dxunvrs f57762fd3b Init
2026-09-03 21:40:46 +03:00

19 lines
1.1 KiB
Markdown

Leetcode #98 | #Medium | [[Деревья]] | [[DFS]] | [[BST]]
## Идея
DFS с границами low и high. Если нода null - true, если значение ноды вне low...high - false. При спуске влево родитель задает ограничение сверху (high), при спуске вправо - ограничение снизу (low) - свойства бинарного дерева.
Важно: изначально high и low нужно ставить в Long.MAX_VALUE/Long.MIN_VALUE (по требованиям задачи, Integer слишком маленький)
## [[Big-O]]
- Время ```O(N)```
- Память ```O(H)```
N - количество узлов, H - высота дерева
## Код
```Java
class Solution {
public boolean isValidBST(TreeNode root) { return dfs(root, Long.MIN_VALUE, Long.MAX_VALUE); }
private boolean dfs(TreeNode node, long low, long high) {
if (node == null) return true;
if (node.val <= low || node.val >= high) return false;
return dfs(node.left, low, node.val) && dfs(node.right, node.val, high);
}
}
```