Leetcode: Validate Binary Search Tree

来源:互联网 发布:手机电影软件 编辑:程序博客网 时间:2024/05/16 23:49

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 binary tree * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:    bool islessthanroot(TreeNode* left, int val)    {        if(left==NULL)return true;        if(left->val >= val)return false;        return islessthanroot(left->left,val) && islessthanroot(left->right,val);    }    bool islargethanroot(TreeNode* right, int val)    {        if(right==NULL)return true;        if(right->val <= val)return false;        return islargethanroot(right->left,val) && islargethanroot(right->right,val);    }    bool isValidBST(TreeNode *root) {        // Start typing your C/C++ solution below        // DO NOT write int main() function        if(root == NULL) return true;        if(islessthanroot(root->left,root->val) && islargethanroot(root->right,root->val))        {            return isValidBST(root->left) && isValidBST(root->right);        }else        return false;            }};





原创粉丝点击