目录
题目:
代码(首刷看解析 2024年1月31日):
class Solution {
public:
bool isValidBST(TreeNode* root) {
return isValidBSTHelper(root, LONG_MIN, LONG_MAX);
}
bool isValidBSTHelper(TreeNode* root,long long min_val,long long max_val) {
if (root == nullptr) return true;
if (root->val <= min_val || root->val >= max_val) return false;
return isValidBSTHelper(root->left, min_val, root->val) &&
isValidBSTHelper(root->right, root->val, max_val);
}
};
代码(二刷看解析 2024年3月6日)
评论区学的,二叉搜索树 + 中序遍历 = 递增数组,因此只要中序遍历搜索树判断是否大于上一个节点即可。
class Solution {
public:
long pre = LONG_MIN;
bool isValidBST(TreeNode* root) {
if (!root)
return true;
//中序遍历左子树
if (!isValidBST(root->left)) return false;
// 如果当前数值比前置节点小,返回false
if (root->val <= pre) return false;
pre = root->val;
// 遍历右子树
return isValidBST(root->right);
}
};
代码(三刷看解析 2024年5月12日)
现已加入二叉树重点关注套餐~
class Solution {
public:
bool helper(TreeNode* root, int64_t& pre) {
if (!root) return true;
if (!helper(root->left, pre)) return false;
if (root->val <= pre) return false;
pre = root->val;
return helper(root->right, pre);
}
bool isValidBST(TreeNode* root) {
int64_t pre = LLONG_MIN;
return helper(root, pre);
}
};