[LeetCode] 98. Validate Binary Search Tree

Chobby·2024년 12월 24일
1

LeetCode

목록 보기
131/194

😎풀이

BST의 기본 형식(좌측 노드는 현재 노드보다 작아야 하며 우측 노드는 현재 노드보다 커야함)을 이해하고 있으면 쉽게 풀이가 가능한 문제이다.

올바른 BST인지 판별하면 끝

function isValidBST(root: TreeNode | null): boolean {
    // 재귀적으로 BST를 검증하는 헬퍼 함수
    // min과 max는 현재 노드가 가질 수 있는 값의 범위를 나타냄
    function validate(node: TreeNode | null, min: number, max: number): boolean {
        // 기저 조건: null 노드는 유효한 BST로 간주
        if (node === null) return true;
        
        // 현재 노드의 값이 주어진 범위를 벗어나면 false
        if (node.val <= min || node.val >= max) {
            return false;
        }
        
        // 왼쪽 서브트리 검사: 모든 노드는 현재 노드보다 작아야 함
        // 오른쪽 서브트리 검사: 모든 노드는 현재 노드보다 커야 함
        return validate(node.left, min, node.val) && 
               validate(node.right, node.val, max);
    }
    
    // 초기 호출: 값의 범위를 숫자의 최소값과 최대값으로 설정
    return validate(root, -Infinity, Infinity);
}
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글