/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode() : val(0), left(nullptr), right(nullptr) {}
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
* };
*/
class Solution {
public:
TreeNode* pre = nullptr;
bool isValidBST(TreeNode* root) {
if (!root) return true;
bool left = isValidBST(root->left);
if (pre != NULL && pre->val >= root->val) return false;
pre = root;
bool right = isValidBST(root->right);
return right && left;
}
};
总结
- pre保存前一个结点
- 中序遍历,遇到前一个值大于等于后一个的值情况返回false
该篇博客主要探讨了如何使用中序遍历的方法来校验一棵二叉树是否为有效的二叉搜索树。通过定义`pre`指针保存前一个节点,博主详细解释了在遍历过程中如何判断当前节点值与前一个节点值的关系,以此来确保树的性质。当发现前一个节点值大于等于当前节点值时,返回false,表明不是有效的二叉搜索树。
897

被折叠的 条评论
为什么被折叠?



