Validate Binary Search Tree

Updated:

이진 탐색 트리가 유효한지를 판별하는 문제이다.

어떻게 해야할지 고민을 하다가 솔루션을 참고했는데, 항상 현위치에서 왼쪽과 오른쪽값의 존재가 필요하기 때문에, Parameter로 왼쪽과 오른쪽을 추가해서 Recursion을 진행해야 한다는 것이었다

by Java

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public boolean isValidBST(TreeNode root) {
        if(root==null) return true;
        return traverse(root,null,null);
    }
    private boolean traverse(TreeNode here,TreeNode Min,TreeNode Max) {
        if(here==null) return true;
        if(Min!=null && here.val<=Min.val) {
            return false;
        }
        if(Max!=null && here.val >=Max.val) {
            return false;
        }
        
        return traverse(here.left,Min,here) && traverse(here.right,here,Max);
    }
}

Leave a comment