/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * }; */ class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param root TreeNode类 * @return bool布尔型 */ bool isValidBST(TreeNode* root) { // write code here if (root == nullptr)return true; if (root->left != nullptr && root->left->val > root->val || root->right != nullptr && root->right->val < root->val) return false; if (!isValidBST(root->left) || !isValidBST(root->right)) return false; return true; } };
一、题目考察的知识点
二叉搜索树的定义
二、题目解答方法的文字分析
如果这棵树是空树,那么他一定是二叉搜索树
如果左子树不空,且左子树的值大于根节点的值或者右子树不为空,右子树的值小于根节点的值,这都是不满足二叉搜索树的定义,那么就判断否,然后继续递归左子树和右子树
三、本题解析所用的编程语言
c++