Binary Search Tree가 주어진다.
정합성이 맞는지 체크해라.
음... lower,upper를 써서 해결하면 될꺼라 생각했고 Recursion이나 큐를 이용해서 풀면 해결 할 수 있을꺼라 생각했다.
음 근데, 좀 테스트케이스가 구데기였다.
일부러 범위를 Integer.MIN_VALUE, Integer.MAX_VALUE 까지 줘서, 2줄이면 해결될 코드를 4줄로 만들게했다.
import java.util.*;
class Solution {
public boolean isValidBST(TreeNode root) {
return isValidCheck(root,null,null);
}
public boolean isValidCheck(TreeNode root, Integer lower, Integer upper){
if(root==null) return true;
if(root.left!=null&&root.left.val>=root.val) return false;
if(root.left!=null&&lower!=null&&root.left.val<=lower) return false;
if(root.right!=null&&root.right.val<=root.val) return false;
if(root.right!=null&&upper!=null&&root.right.val>=upper) return false;
return isValidCheck(root.left,lower,root.val) && isValidCheck(root.right,root.val,upper);
}
}
뭐 그렇수다...