트리는 노드 요소보다 작은 왼쪽 자식과 노드 요소보다 큰 오른쪽 자식이 모두 있는 경우 이진 검색 트리입니다. 처음에 노드에 값이 있는지 확인하고 노드가 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