zoukankan      html  css  js  c++  java
  • Validate Binary Search Tree

    Given a binary tree, determine if it is a valid binary search tree (BST).

    Assume a BST is defined as follows:

    • The left subtree of a node contains only nodes with keys less than the node's key.
    • The right subtree of a node contains only nodes with keys greater than the node's key.
    • Both the left and right subtrees must also be binary search trees.

    confused what "{1,#,2,3}" means? > read more on how binary tree is serialized on OJ.

    Subscribe to see which companies asked this question

    用中序遍历依次判断当前节点数值是否比前一个节点大就可以了,注意第一个节点数值判断条件

    non-recursion版本

    bool isValidBST(TreeNode* root) {
        if (root == nullptr)
            return true;
        stack<TreeNode*> sta;
        sta.push(root);
        TreeNode* lastNode = nullptr;
        TreeNode* lastRoot = root;
        while (!sta.empty())
        {
            root = sta.top();
            if (lastRoot != root->right)
            {
                if (lastRoot != root->left) {
                    if (root->left != nullptr) {
                        sta.push(root->left);
                        continue;
                    }
                }
                if (!lastNode || root->val > lastNode->val)
                    lastNode = root;
                else
                    return false;
                if (root->right != nullptr) {
                    sta.push(root->right);
                    continue;
                }
            }
            lastRoot = root;
            sta.pop();
        }
        return true;
    }
  • 相关阅读:
    OC练习题
    如何将字符串@“ abc123.xyz789”倒置
    整数转换成字符串倒叙放在数组中遍历
    查找名字中有王的姓
    查询单词里包含的字符串
    OC7考核
    OC考核测试题
    OC6考核
    OC5考核
    KH8
  • 原文地址:https://www.cnblogs.com/sdlwlxf/p/5223590.html
Copyright © 2011-2022 走看看