zoukankan      html  css  js  c++  java
  • LeetCode T98.Validate Binary Search Tree/验证二叉搜索树

     本题有两种思路求解,一种是利用递归,逐层验证该节点是否符合BST的要求,空间复杂度较大。第二种是利用中序遍历二叉搜索树,判断序列是否升序来判断是否为二叉搜索树。

    我的题解代码如下,leetcode上运行时间16ms,内存占用18.3MB

    /**
     * Definition for a binary tree node.
     * struct TreeNode {
     *     int val;
     *     TreeNode *left;
     *     TreeNode *right;
     *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     * };
     */
    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();
                // 中序遍历后得到的是一个升序序列
                if (root -> val <= inorder) return false;
                inorder = root -> val;
                root = root -> right;
            }
            return true;
        }
    };
  • 相关阅读:
    [uoj173]鏖战表达式
    [cf1168E]Xor Permutations
    [cf578F]Mirror Box
    [cf1261F]Xor-Set
    [loj2506]tree
    [atARC068F]Solitaire
    [atARC066F]Contest with Drinks Hard
    [cf1270I]Xor on Figures
    [cf516D]Drazil and Morning Exercise
    无题
  • 原文地址:https://www.cnblogs.com/runsdeep/p/12829334.html
Copyright © 2011-2022 走看看