(Tree, Medium) Validate Binary Search Tree

송재호·2025년 8월 13일
0

https://leetcode.com/problems/validate-binary-search-tree/description/

Binary Search Tree가 유효한지 검사하는 문제다.
이진 탐색 트리에서 왼쪽 서브트리의 모든 노드는 루트보다 작아야 하고,
오른쪽 서브트리의 모든 노드는 루트보다 커야 한다.

그러므로 재귀적으로 풀 때 min, max값을 갱신해가며 풀어주면 된다.
각 재귀마다 루트값을 기준으로 min, max를 결정하며, 끝 부분과 min/max 사이에 있는 값인지 검사하면 논리적으로 맞다.

class Solution {
    public boolean isValidBST(TreeNode root) {
        return check(root, null, null);
    }

    private boolean check(TreeNode node, Integer min, Integer max) {
        if (node == null) {
            return true;
        }

        if (min != null && min >= node.val) {
            return false;
        }
        if (max != null && max <= node.val) {
            return false;
        }

        return check(node.left, min, node.val) && check(node.right, node.val, max);
    }
}
profile
식지 않는 감자

0개의 댓글