이름
유효한 이진 검색 트리인지 확인 이진 트리를 감안할 때.
다음과 같은 특성을 갖는 이진 검색 트리를 가정 해 봅시다 :
트리의 왼쪽 자식 노드는 현재 노드의 수보다 단지 적게 포함되어 있습니다.
오른쪽 하위 트리 현재 노드의 노드 수보다 단지 더 포함되어 있습니다.
모든 왼쪽 하위 트리 오른쪽 하위 트리 자체도 이진 검색 트리해야합니다.
출처 : 숙박 버튼 (LeetCode)
링크 : https://leetcode-cn.com/problems/validate-binary-search-tree는
모든 네트워크에서 공제 저작권. 상업 무단 전재 소스를 표시하시기 바랍니다 승인 된 공식, 비상업적 재판에 문의하시기 바랍니다.
문제 해결
제목으로 예약 주문 그것은 BST입니다 엄격하게 증가한다.
필요가 단순히 과정에 인접한 두 요소 예약 주문 서열을 비교하기 위해 탐색의 결과를 저장 없습니다.
코드
public static boolean isValidBST(TreeNode root) {
Stack<TreeNode> stack = new Stack<>();
TreeNode curNode = root;
long maxVal = Long.MIN_VALUE;
while (curNode != null || !stack.isEmpty()) {//
while (curNode != null) {
stack.push(curNode);
curNode = curNode.left;
}
curNode = stack.pop();
if (curNode.val > maxVal) {
maxVal = curNode.val;
curNode = curNode.right;//
} else {
return false;
}
}
return true;
}