维护一个区间[min,max], 每一个节点的值必须在这个区间内,所以
class Solution {
public:
bool isValidBST(TreeNode* root) {
return dfs(root,LONG_MIN,LONG_MAX);
}
bool dfs(TreeNode* root, long min, long max){
if(root==NULL) return true;
if(root->val<=min||root->val>=max) return false;
return dfs(root->left,min,root->val) && dfs(root->right,root->val,max);
}
};