zoukankan      html  css  js  c++  java
  • 【leetcode】98. 验证二叉搜索树

    bool recursion(struct TreeNode* root,long lower,long upper){
        if(!root)
            return true;
        if(root->val <= lower || root->val >= upper)
            return false;
        return recursion(root->left,lower,root->val) && recursion(root->right,root->val,upper);    
    }
    bool isValidBST(struct TreeNode* root){
        return recursion(root,LONG_MIN,LONG_MAX);
    }
    class Solution {
    public:
        bool isValidBST(TreeNode* root) {
            stack<TreeNode*> stack;
            long long inorder = (long long)INT_MIN - 1;
    
            while (!stack.empty() || root != nullptr) {
                while (root != nullptr) {
                    stack.push(root);
                    root = root -> left;
                }
                root = stack.top();
                stack.pop();
                // 如果中序遍历得到的节点的值小于等于前一个 inorder,说明不是二叉搜索树
                if (root -> val <= inorder) {
                    return false;
                }
                inorder = root -> val;
                root = root -> right;
            }
            return true;
        }
    };
    
  • 相关阅读:
    安全和加密
    awk
    CentOS7练习
    CentOS7系统引导顺序以及排障
    网络配置
    RAID阵列搭建
    LVM逻辑卷
    java-web——第九课 request
    java-web——第八课 JSTL的显示格式
    java-web——第七课 JSTL
  • 原文地址:https://www.cnblogs.com/ganxiang/p/14139855.html
Copyright © 2011-2022 走看看