/**
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
* };
*/
#include <climits>
class Solution {
public:
/**
判断是不是搜索二叉树,深度优先搜索-》比较左子树要小,右子树要大-》但是不能超过根节点作为子树的性质,左子树不能小于根节点作为右子树的父节点的值,依次类推,甚至更上层的树-》直接在深度优先搜索中传递其限制条件,以及更新限制,没有则是true
*/
bool df(TreeNode* root, int min_val, int max_val){
if(root == nullptr)return true;
return root->val < max_val && root->val > min_val && df(root->left, min_val, root->val) && df(root->right, root->val, max_val);
}
bool isValidBST(TreeNode* root) {
return df(root, INT_MIN, INT_MAX);
}
};