LeetCode 98
https://leetcode.cn/problems/validate-binary-search-tree/description/
难度:中等
使用中序遍历验证二叉搜索树,比较当前节点与上一个节点的值的大小。需要注意的是,为了处理节点值为 INT_MIN 的情况,pre 需要初始化为 LLONG_MIN。
时间复杂度:O(n),其中 n 为二叉搜索树的节点个数。
空间复杂度:O(n)。最坏情况下,二叉搜索树退化成一条链(注意题目没有保证它是平衡树),因此递归需要 O(n) 的栈空间。
class Solution {
long long pre = LLONG_MIN;
public:
bool isValidBST(TreeNode* root) {
if (root == nullptr) {
return true;
}
if (!isValidBST(root->left)) { // 左
return false;
}
if (root->val <= pre) { // 中
return false;
}
pre = root->val;
return isValidBST(root->right); // 右
}
};