leetcode98. 验证二叉搜索树

分析

中序遍历可以验证二叉搜索树,用pre表示前一个节点的值,中序遍历中,如果有值pre小那么就不是二叉搜索树了,先验证左子树,然后验证右子树。

/**
 * 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:
    long pre=LONG_MIN;
    bool inorder(TreeNode* root){
        if(!root) return true;
        bool l=inorder(root->left);
        if(root->val<=pre)return false;
        if(!l)return false;
        pre=root->val;
        bool r=inorder(root->right);
       return r;
    }
    bool isValidBST(TreeNode* root) {
        return inorder(root);
    }
};