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

递归_验证二叉搜索树_C++

一.题目解析

算法解析:

我们需要知道搜索二叉树的一些性质

知道这些前置的知识,来看一下子问题:每一个节点左边都是严格小于的,右边都是严格大于的

我们就可以用prev存储上一次中序遍历的结果,进行深度优先遍历

看一下具体的过程:

二.代码编写:

/** * 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 { public: long prev=LONG_MIN;//全局变量,确保每一次递归都是用同一个prev bool isValidBST(TreeNode* root) { if(root==nullptr)return true;//空树也是二叉搜索树 bool cur=false; bool left=isValidBST(root->left);//左 if(root->val>prev) cur=true,prev=root->val;//中 else return false; bool right=isValidBST(root->right);//右 return 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 { public: long prev=LONG_MIN;//全局变量,确保每一次递归都是用同一个prev bool isValidBST(TreeNode* root) { if(root==nullptr)return true;//空树也是二叉搜索树 bool cur=false; bool left=isValidBST(root->left);//左 if(left==false)return false;//剪树枝 if(root->val>prev) cur=true,prev=root->val;//中 else return false; if(cur==false)return false;//剪树枝 bool right=isValidBST(root->right);//右 // if(right==false)return false;//剪树枝,这里可以不用,因为中序右就是最后了没有其他树枝,理解为主 return left&&cur&&right; } };
http://www.jsqmd.com/news/514846/

相关文章:

  • Qwen3模型CSDN技术博客助手:从思路到排版的全流程辅助
  • qgis与qt开发基于vs环境搭建(傻瓜式教程)
  • COMSOL电磁超声仿真:L型铝板裂纹检测的电磁超声测量技术
  • 2026年半导体行业ESD闸机专业度评测报告:上海小区闸机/上海工业园区闸机/上海工地实名制闸机/上海无尘车间闸机/选择指南 - 优质品牌商家
  • CD192(CCR2):炎症趋化机制解析与药物研发关键技术
  • 压缩空气储能系统及其释能阶段模型研究及仿真程序编写——附相关文档文献
  • Win10下用Conda虚拟环境离线安装PyTorch的保姆级教程(附CUDA版本选择指南)
  • OpenClaw学术助手:ollama-QwQ-32B自动整理参考文献
  • 2026混凝土外加剂优质推荐榜防水防裂选型指南:混凝土外加剂/混凝土防水剂/渗透结晶防水材料/纳米抗裂减渗剂/聚丙烯抗裂纤维/选择指南 - 优质品牌商家
  • Java爬虫新选择:HtmlUnit无头浏览器实战(附IT之家数据抓取完整代码)
  • Granite TimeSeries FlowState R1模型解析:深入其内部数据结构与优化
  • Youtu-Parsing与GitHub Actions结合:实现文档解析模型的CI/CD流水线
  • 嵌入式Linux日志滚动覆盖实战:zlog配置与优化
  • 写作者与程序员的利器:Qwen3-4B-Instruct在内容创作与代码生成中的惊艳表现
  • 2026年工业夹爪品牌推荐,行业生产标准详解指南 - 品牌2026
  • 出一次规划垂直泊车路径规划matlab代码。 回旋曲线对泊车路径进行优化,图片仅供参考
  • 避坑指南:Cisco Packet Tracer 7.3游客模式 vs 账号登录的隐藏限制详解
  • 【Unity】贪吃蛇-基础框架
  • AIGlasses_for_navigation应用构建平台:基于Dify实现低代码导航AI工作流
  • 2026冶金高温高压工况磁翻板液位计推荐榜:氟利昂液位计/氟利昂液位计/氨水液位计/氨水液位计/氯气流量计/氯气流量计/选择指南 - 优质品牌商家
  • BEYOND REALITY Z-Image实际作品:无磨皮、无失真、保留毛孔纹理的高清人像
  • Pandownload与网盘直链下载助手深度测评:不限速与体验的全面对比
  • SEO_详解SEO核心关键词研究与布局策略
  • Qwen-Image定制镜像保姆级教程:RTX4090D+CUDA12.4环境搭建与Qwen-VL推理脚本详解
  • 2026年电爪品牌推荐,高精密夹持选型全攻略 - 品牌2026
  • 终极指南:如何在Linux上轻松安装Realtek 8852CE无线网卡驱动
  • 2026年新能源光伏领域优质螺母厂家指南:双头螺栓/国标螺栓/圆螺母/塔吊螺栓/外六角螺栓/尼龙螺母/开槽螺母/选择指南 - 优质品牌商家
  • 避坑指南:在CentOS 7上独立部署Apache Atlas 2.0,搞定Hadoop 3.1.1、Hive 3.1.0和HBase 2.2.2的版本兼容
  • labelCloud:3D点云标注的终极解决方案,快速生成高质量训练数据
  • 手把手教你用MATLAB实现一阶RC低通滤波器(附完整代码与避坑指南)