• validate BST


    LC98. Validate Binary Search Tree

    给定一个二叉树,判断它是否为二叉搜索树

    方法一:BST的中序遍历结果是一个严格递增的序列,因此中序遍历的时候保存上一个遍历到的节点,当前节点的值必须大于上一个节点的值

    class Solution {
    public:
        bool isValidBST(TreeNode* root) {
            TreeNode* prev = NULL;
            return validate(root, prev);
        }
        bool validate(TreeNode* node, TreeNode* &prev) {
            if (node == NULL) return true;
            if (!validate(node->left, prev)) return false;
            if (prev != NULL && prev->val >= node->val) return false;
            prev = node;
            return validate(node->right, prev);
        }
    };

    方法二:从上到下遍历,保存父节点和爷节点的值,这两个节点的值决定了当前节点值的取值范围。

    bool isValidBST(TreeNode* root) {
        return isValidBST(root, NULL, NULL);
    }
    
    bool isValidBST(TreeNode* root, TreeNode* minNode, TreeNode* maxNode) {
        if(!root) return true;
        if(minNode && root->val <= minNode->val || maxNode && root->val >= maxNode->val)
            return false;
        return isValidBST(root->left, minNode, root) && isValidBST(root->right, root, maxNode);
    }
  • 相关阅读:
    Java从静态代理到动态代理
    Redis持久化
    Linux top命令详解
    从Java线程到线程池
    NodeJs的学习
    使用<金蝶云星空集成开发平台>创建单据的操作步骤
    Maven项目的创建
    XCX_豆瓣电影
    小程序,新手上路
    更改Apache虚拟目录并授予权限 及 { 修改索引页 }
  • 原文地址:https://www.cnblogs.com/betaa/p/12453777.html
Copyright © 2020-2023  润新知