//需要判断左子树的最小值>root val,右子树的最大值<root val
/**
* 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 isValidBST(TreeNode *root) {
return subBST(root,INT_MIN,INT_MAX);
}
bool subBST(TreeNode *root,int minnum, int maxnum)
{
if(root==NULL)
return true;
if(root->val>minnum&&root->val<maxnum)
return subBST(root->left,minnum,min(maxnum,root->val))&&
subBST(root->right,max(minnum,root->val),maxnum);
return false;
}
};