/** * 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); } };