LeetCode - Validate Binary Search Tree

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

문제 설명

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개의 댓글