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.


Find a legitimate test of a binary tree.

It requires that all values ​​smaller than the left node itself, all right node is greater than themselves.

Therefore, each time the function returns, the left node of the node N should be greater than the value of N should be greater than && less than N, N && right node should be greater than less than the value of N should be less than.



/**

* 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 {

public:

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

    }

};

Guess you like

Origin blog.csdn.net/weixin_34290000/article/details/90991338