# 연관 링크
- [문제 풀이 스케줄](https://github.com/orgs/DaleStudy/projects/6/views/5)
- [답안 코드 제출법](https://github.com/DaleStudy/leetcode-study/wiki/%EB%8B%B5%EC%95%88-%EC%A0%9C%EC%B6%9C-%EA%B0%80%EC%9D%B4%EB%93%9C)

# Problem
- 문제 링크 : https://leetcode.com/problems/validate-binary-search-tree/
- 문제 이름 : validate-binary-search-tree
- 문제 번호 : 251
- 난이도 : medium
- 카테고리 : binary search tree

# 문제 설명

Given the root of a binary tree, determine if it is a valid binary search tree (BST).

A valid BST is defined as follows:

The left subtree of a node contains only nodes with keys less than the node's key.
The right subtree of a node contains only nodes with keys greater than the node's key.
Both the left and right subtrees must also be binary search trees.

#### Constraints:

- The number of nodes in the tree is in the range [1, 104].
- 2^31 <= Node.val <= 2^31 - 1

# 아이디어
- 각 노드 별 



# 코드 (Solution)
```cpp

class Solution {
public:
    bool isValidBSTHelper(TreeNode* root, long min, long max){
        if (!root) {
            return true;
        }

        if (root->val <= min || root->val >= max) {
            return false;
        }

        return isValidBSTHelper(root->left, min, root->val) &&
               isValidBSTHelper(root->right, root->val, max);
    }

    bool isValidBST(TreeNode* root) {
        return isValidBSTHelper(root, LONG_MIN, LONG_MAX);
    }
};
```

## 코드 설명

- INT_MIN / INT_MAX가 Constraint의 경계값이지만, 해당 값을 이용할 경우 경계값 비교 시 번거로워지므로 LONG으로 비교하도록 처리


# 최적화 포인트 (Optimality Discussion)
- 특이 사항 없음

# 🧪 테스트 & 엣지 케이스

## INT_MAX / INT_MIN으로 할 경우
- root = [2147483647] 인 경우 엣지 케이스

# 📚 관련 지식 복습

# 🔁 회고


