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;
        }
    };
    
  • 相关阅读:
    在C#中使用消息队列RabbitMQ
    从url到页面经历了什么
    jsonp跨域远离
    DNS预处理
    一个架构师需要考虑的问题
    angular2和Vue2对比
    图片多的问题
    xinwenti
    xss和csrf
    ajax是什么
  • 原文地址:https://www.cnblogs.com/ganxiang/p/14139855.html
Copyright © 2011-2022 走看看