14주차 · 트리와 이진 트리
보통트리DFS재귀

이진 탐색 트리 유효성 검사

이진 트리의 루트 root가 주어져요. 이 트리가 이진 탐색 트리(BST)이면 true, 아니면 false를 반환해요.

이진 탐색 트리는 모든 노드에 대해 왼쪽 서브트리의 모든 값이 자기 값보다 작고, 오른쪽 서브트리의 모든 값이 자기 값보다 커야 해요. 바로 아래 두 자식만 보는 것으로는 부족해요 — 손자 이하도 조건을 지켜야 해요.

값은 모두 서로 다르다고 가정해요. 빈 트리는 유효한 BST예요.

트리는 레벨 순서 배열로 주어져요. null은 자식이 없다는 뜻이고, 채점기가 이 배열을 노드로 바꿔서 root로 넘겨줘요. 노드는 val, left, right를 가지며, 새 노드가 필요하면 TreeNode로 만들 수 있어요.

예시

예시 1
예시 2
예시 3

제한 사항

  • 노드 개수는 0개 이상 10,000개 이하예요.
  • -100,000 ≤ node.val ≤ 100,000
  • 모든 값은 서로 달라요.
노드마다 '이 값이 들어갈 수 있는 범위'를 물려주세요. 왼쪽으로 내려가면 상한이 부모 값으로 좁혀지고, 오른쪽으로 내려가면 하한이 부모 값으로 좁혀져요. 중위 순회 결과가 오름차순인지 보는 방법도 있어요.
javascript
function isValidBST(root) {
const check = (node, low, high) => {
if (node === null) return true;
if (low !== null && node.val <= low) return false;
if (high !== null && node.val >= high) return false;
return check(node.left, low, node.val) && check(node.right, node.val, high);
};
return check(root, null, null);
}
이전 문제트리 뒤집기
에디터를 불러오고 있어요…
코드를 작성하고를 눌러 예시 테스트를 확인해 보세요.