package com.fishercoder.solutions;

import com.fishercoder.common.classes.TreeNode;

/**
 * 98. Validate Binary Search Tree
 *
 * Given a binary tree, determine if it is a valid binary search tree (BST).

 Assume a BST is defined as follows:

 The left subtree of a node contains only nodes with keys less than the node's key.
 The right subtree of a node contains only nodes with keys greater than the node's key.
 Both the left and right subtrees must also be binary search trees.

 Example 1:
   2
  / \
 1   3
 Binary tree [2,1,3], return true.

 Example 2:
   1
  / \
 2   3
 Binary tree [1,2,3], return false.
 */
public class _98 {

    public static class Solution1 {

        public boolean isValidBST(TreeNode root) {
            return valid(root, null, null);
        }

        boolean valid(TreeNode root, Integer min, Integer max) {
            if (root == null) {
                return true;
            }
            if ((min != null && root.val <= min) || (max != null && root.val >= max)) {
                return false;
            }
            return valid(root.left, min, root.val) && valid(root.right, root.val, max);
        }
    }

}

@@ -82,543 +82,8 @@
 e;%0A%0A
-/**%0A * 98. Validate Binary Search Tree%0A *%0A * Given a binary tree, determine if it is a valid binary search tree (BST).%0A%0A Assume a BST is defined as follows:%0A%0A The left subtree of a node contains only nodes with keys less than the node's key.%0A The right subtree of a node contains only nodes with keys greater than the node's key.%0A Both the left and right subtrees must also be binary search trees.%0A%0A Example 1:%0A   2%0A  / %5C%0A 1   3%0A Binary tree %5B2,1,3%5D, return true.%0A%0A Example 2:%0A   1%0A  / %5C%0A 2   3%0A Binary tree %5B1,2,3%5D, return false.%0A */%0A
 publ

refactor 98