当前位置: 首页 > news >正文

leetcode 98 验证二叉搜索树

一、题目描述

二、解题思路

整体思路

二叉搜索树的中序遍历序列是单调递增的,我们可以根据这个原则来判断当前的二叉树是否为二叉搜索树。由于要借助中序遍历的方法,所以我们借助递归来解决这个问题。

具体思路

考虑到空间的开销,我们无需申请数组来寄存中序遍历的序列,可以设置一个全局变量pre,来记录前一个数值,辅助判断。

(1)函数功能isValidBST函数用于判断以root为根节点的二叉树是否为二叉搜索树;

(2)递归出口:当root为空节点时,直接返回true

(3)函数体:

<1>处理左子树,判断左子树是否为二叉搜索树。当左子树不为二叉搜索树,直接返回false,进行左剪枝;

<2>处理当前节点。判断当前节点的值是否大于pre,更新pre的值;

<3>处理右子树,判断右子树是否为二叉搜索树。当右子树不为二叉搜索树,直接返回false,进行右剪枝。

(4)返回left&&cur&&right即可。

三、代码实现

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {long pre=LONG_MIN;
public:bool isValidBST(TreeNode* root) {//边界处理if(root==nullptr) return true;//处理左子树bool left=isValidBST(root->left);if(left==false) return false;//左剪枝//处理本身bool cur=true;if(root->val<=pre) cur=false;pre=root->val;//处理右子树bool right=isValidBST(root->right);if(right==false) return false;//右剪枝return left&&cur&&right;}
};

http://www.dtcms.com/a/407074.html

相关文章:

  • 国外外包网站天津百度搜索排名优化
  • 中国建设银行网站企业网银收费怎么在外国网站上找产品做跨境电商
  • 合肥网站优化搜索怎么做网站优化 site
  • 建站网络公司建筑二级建造师培训机构
  • 网站安全架构网站建设注意哪些问题
  • Python个性化新闻系统 新闻情感分析推荐系统 爬虫+情感分析+推荐算法(附源码)✅
  • Qt容器QList、QLinkedList、QVector特性浅谈
  • 时间序列分析新视角论文分享:LLM 搬进时间序列
  • 黑盒渗透DC-2报告总结
  • 英语培训网站建设东莞网站建设乐云seo
  • 怎么清理网站后门文件.net做网站教程
  • Qt常用控件之QLCDNumber
  • Java 实现LCRIME 雾凇变体算法
  • 做logo网站的公司高质量的猎建筑人才
  • 家居品牌网站建设巴中+网站建设
  • 大模型系列—— GPT-5 Codex 正式登陆 Azure AI Foundry
  • 互联网网站怎么做零售app开发公司
  • 有了自己的网站怎样做后台做网站怎么那么难
  • 【RK3576与USB转CAN收发C++实战ubuntu22.04】
  • FreeRTOS临界区管理使用中断的思路(一)
  • 义乌企业网站杭州网站建设推荐q479185700上墙
  • Spring 中的 Bean 有哪些作用域?单例 Bean 在多线程环境下会有线程安全问题吗?为什么?
  • 如何个网站做优化网站是用什么软件做的
  • 远程安全提示再升级!隐私屏开启位置突出、可录入被控锁屏...
  • 现在市面网站做推广好电子商务推广方式有哪些
  • Ansible Playbook 编写与模块详解
  • 114. 二叉树展开为链表
  • 使用 C++ 开发 Vim 插件
  • 企业网站手机端开发家纺网站模板
  • 网站后台怎样登陆什么网站可以做卷子