트리는 노드 요소보다 작은 왼쪽 자식과 노드 요소보다 큰 오른쪽 자식이 모두 있는 경우 이진 검색 트리입니다. 처음에 노드에 값이 있는지 확인하고 노드가 null이면 유효한 이진 검색 트리로 간주하고 true를 반환합니다. 노드 null 결과를 확인한 후 노드, 최소값 및 최대값을 전달하여 재귀 메서드 isValidBST를 호출합니다. 루트 값이 최소값보다 작고 루트 값이 최대값보다 크면 이진 탐색 트리가 아닌 것으로 간주하고 false를 반환합니다. 그렇지 않으면 모든 노드를 확인할 때까지 왼쪽 및 오른쪽 값을 전달하여 isValidBST 메서드를 재귀적으로 호출합니다.
예시
public class TreesPgm{
public class Node{
public int Value;
public Node LeftChild;
public Node RightChild;
public Node(int value){
this.Value = value;
}
public override String ToString(){
return "Node=" + Value;
}
}
public bool isValidBST(Node root){
if (root == null){
return true;
}
return isValidBST(root, int.MinValue, int.MaxValue);
}
private bool isValidBST(Node root, int min, int max){
if (root == null){
return true;
}
if (root.Value <= min || root.Value >= max){
return false;
}
return isValidBST(root.LeftChild, min, root.Value) && isValidBST(root.RightChild,
root.Value, max);
}
} 입력
5 2 6 1 3
출력
True