考察的知识点:有效搜索二叉树的判断;
解答方法分析:
- 首先检查根节点是否为空,如果为空则直接返回true,表示空树是有效的二叉搜索树。
- 然后判断根节点的左子节点和右子节点是否满足二叉搜索树的定义,即左子节点的值小于等于根节点的值,右子节点的值大于等于根节点的值。如果不满足,说明根节点及其子树不是有效的二叉搜索树,直接返回false。
- 继续递归地判断左子树和右子树是否是有效的二叉搜索树,如果有任何一颗子树不满足,就返回false。
- 如果整棵树都满足二叉搜索树的定义,就返回true。
所用编程语言:C++;
完整编程代码:↓
/** * 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) { if (root == nullptr) return true; if (root->left != nullptr && root->left->val >= root->val) return false; if (root->right != nullptr && root->right->val <= root->val) return false; if (!isValidBST(root->left) || !isValidBST(root->right)) return false; return true; } };