Check函数: 以 root
为根的子树,判断子树中所有节点的值是否都在 (lower, upper)的范围内(注意是开区间)。
用LONG_MAX或LONG_MIN要 #include <limits.h>
bool Check(struct TreeNode * root, long long int upper, long long int lower ){
if(root == NULL) return true;
else if(root->val <= lower || root->val >= upper) return false;
else{
return Check(root->left, root->val, lower) && Check(root->right, upper, root->val);
//以root->left 为根的树,判断树中所有节点的值是否都在(lower, root->val)内
//以root->right 为根的树,判断树中所有节点的值是否都在(root->val, upper)内
}
}
bool isValidBST(struct TreeNode * root){
return Check(root, LONG_MAX, LONG_MIN);
}