Leetcode—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.





* Definition for a binary tree node.

* struct TreeNode {

*    int val;

*    TreeNode *left;

*    TreeNode *right;

*    TreeNode(int x) : val(x), left(NULL), right(NULL) {}

* };


class Solution {


    bool isValidBST(TreeNode* root) {

        return isValidBST(root, NULL, NULL);


    bool isValidBST(TreeNode* root, TreeNode* minNode, TreeNode* maxNode) {

        if(!root) return true;

        if(minNode && root->val <= minNode->val || maxNode && root->val >= maxNode->val)

            return false;

        return isValidBST(root->left, minNode, root) && isValidBST(root->right, root, maxNode);