class Solution {
public:
bool isValidBST(TreeNode* root) {
return isValidBST(root,INT_MIN - 1l,INT_MAX + 1l);
}
bool isValidBST(TreeNode* &root,long int pre,long int after) {
if(!root) return true;
return (pre < root->val) && (after >root->val) && isValidBST(root->left,pre,root->val) && isValidBST(root->right,root->val,after);
}
};
public:
bool isValidBST(TreeNode* root) {
return isValidBST(root,INT_MIN - 1l,INT_MAX + 1l);
}
bool isValidBST(TreeNode* &root,long int pre,long int after) {
if(!root) return true;
return (pre < root->val) && (after >root->val) && isValidBST(root->left,pre,root->val) && isValidBST(root->right,root->val,after);
}
};