力扣 98. 验证二叉搜索树

这篇具有很好参考价值的文章主要介绍了力扣 98. 验证二叉搜索树。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

题目来源:https://leetcode.cn/problems/validate-binary-search-tree/description/

力扣 98. 验证二叉搜索树,开始C++吧,leetcode,算法,c++,数据结构,二叉树

 力扣 98. 验证二叉搜索树,开始C++吧,leetcode,算法,c++,数据结构,二叉树

 C++题解1:中序遍历,递归法。获取数组,如果是递增则返回true,否则返回false。

class Solution {
public:
    void zhongxu(TreeNode* node, vector<int>& sto){
        if(!node) return;
        zhongxu(node->left, sto);
        sto.push_back(node->val);
        zhongxu(node->right, sto);  
        return;      
    }
    bool isValidBST(TreeNode* root) {
        if(!root) return true;
        vector<int> sto;
        zhongxu(root, sto);
        int len = sto.size();
        for(int i = 1; i < len; i++){
            if(sto[i] <= sto[i-1]) return false;
        }
        return true;
    }
};

C++题解2:中序遍历,递归法。不断更新最大值,初始化为最左最下层的节点值,按照中序遍历可以更新为上一节点的值。

class Solution {
public:
    TreeNode* pre = NULL; // 用来记录前一个节点
    bool isValidBST(TreeNode* root) {
        if (root == NULL) return true;
        bool left = isValidBST(root->left);

        if (pre != NULL && pre->val >= root->val) return false;
        pre = root; // 记录前一个节点

        bool right = isValidBST(root->right);
        return left && right;
    }
};

C++题解3:迭代法。文章来源地址https://www.toymoban.com/news/detail-527833.html

class Solution {
public:
    bool isValidBST(TreeNode* root) {
        stack<TreeNode*> st;
        TreeNode* cur = root;
        TreeNode* pre = NULL; // 记录前一个节点
        while (cur != NULL || !st.empty()) {
            if (cur != NULL) {
                st.push(cur);
                cur = cur->left;                // 左
            } else {
                cur = st.top();                 // 中
                st.pop();
                if (pre != NULL && cur->val <= pre->val)
                return false;
                pre = cur; //保存前一个访问的结点

                cur = cur->right;               // 右
            }
        }
        return true;
    }
};

到了这里,关于力扣 98. 验证二叉搜索树的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • leetcode每日一练-第98题- 验证二叉搜索树

        一、思路 因为要验证多个节点是否是二叉搜索树,因此使用 递归 二、解题方法 设计一个递归函数 helper(root, lower, upper) 来递归判断,函数表示考虑以 root 为根的子树,判断子树中所有节点的值是否都在 (l,r)的范围内(注意是开区间)。如果 root 节点的值 val 不在 (l,r)的范

    2024年02月15日
    浏览(37)
  • 数据结构与算法之二叉树: Leetcode 98. 验证二叉搜索树 (Typescript版)

    验证二叉搜索树 https://leetcode.cn/problems/validate-binary-search-tree/ 描述 给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树 有效 二叉搜索树定义如下: 节点的左子树只包含 小于 当前节点的数。 节点的右子树只包含 大于 当前节点的数。 所有左子树和右子树自身

    2024年02月16日
    浏览(28)
  • 算法训练day20Leetcode654最大二叉树617合并二叉树700二叉树中的1搜索98验证二叉搜索树

    https://leetcode.cn/problems/maximum-binary-tree/description/ 中序遍历递归,找到最大值然后作为根节点 凡是构造二叉树的题目都用前序遍历 (中左右) 为先构造中间节点,然后递归构造左子树和右子树。 确定递归函数的参数和返回值 参数传入的是存放元素的数组,返回该数组构造的二

    2024年01月21日
    浏览(32)
  • LeetCode98:验证二叉搜索树,居然有这么简单的中等难度,白捡(用时击败100%)

    这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 做这道题之前,我反复审题,最后确认:没错,不存在什么坑,这道题确实非常非常简单,然而却被官方定义为 中等 难度 这一定是送分,白捡一道中等难度题,接下来,一起来轻松愉快的享受解题

    2024年02月09日
    浏览(25)
  • 【算法刷题day20】Leetcode:654. 最大二叉树、617.合并二叉树、700. 二叉搜索树中的搜索、98.验证二叉搜索树

    草稿图网站 java的Deque 题目: 654. 最大二叉树 解析: 代码随想录解析 解题思路 NLR的建树 代码 总结 暂无 题目: 617.合并二叉树 解析: 代码随想录解析 解题思路 如果都为root1, root2都为空,返回null;如果root1为空,root2不为空,返回root2;如果roo1不为空,root2为空,返回root

    2024年04月10日
    浏览(31)
  • 98. 验证二叉搜索树

    98. 验证二叉搜索树 https://leetcode.cn/problems/validate-binary-search-tree/ //保证按照规则来,往左边走就要,不能比当前值还大了;往右边走就要,不能比当前值还小了;

    2024年02月16日
    浏览(28)
  • LeetCode(力扣)700. 二叉搜索树中的搜索Python

    https://leetcode.cn/problems/search-in-a-binary-search-tree/ 递归法 迭代

    2024年02月11日
    浏览(20)
  • LeetCode刷题--- 验证二叉搜索树

    个人主页:元清加油_【C++】,【C语言】,【数据结构与算法】-CSDN博客 个人专栏:力扣递归算法题                    【C++】   前言:这个专栏主要讲述递归递归、搜索与回溯算法,所以下面题目主要也是这些算法做的   我讲述题目会把讲解部分分为3个部分: 1、题目解析

    2024年02月04日
    浏览(26)
  • 【leetcode100-042/043】【二叉树】二叉搜索树的转换和验证

    【转换】 给你一个整数数组  nums  ,其中元素已经按  升序  排列,请你将其转换为一棵  高度平衡  二叉搜索树。 高度平衡  二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。 思路: 可以说是递归板子题了。每次把数组切两半,中间

    2024年01月20日
    浏览(29)
  • C++力扣题目700--二叉搜索树中的搜索

    给定二叉搜索树(BST)的根节点  root  和一个整数值  val 。 你需要在 BST 中找到节点值等于  val  的节点。 返回以该节点为根的子树。 如果节点不存在,则返回  null  。 示例 1: 示例 2:   之前我们讲的都是普通二叉树,那么接下来看看二叉搜索树。 在关于二叉树,你该了

    2024年01月17日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包