LeetCode - Validate Binary Search Tree

600g (Kim Dong Geun)·2020년 9월 20일
0

문제 설명

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);
        
    }
}

결과

뭐 그렇수다...

profile
수동적인 과신과 행운이 아닌, 능동적인 노력과 치열함

0개의 댓글