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

(C++二叉树05) 合并二叉树 二叉搜索树中的搜索 验证二叉搜索树

617、合并二叉树

递归法:

class Solution {
public:TreeNode* traversal(TreeNode* root1, TreeNode* root2) {if(root1 == NULL && root2 == NULL) {return NULL;}else if(root1 == NULL) {return root2;}else if(root2 == NULL) {return root1;}root1->val = root1->val + root2->val;root1->left = traversal(root1->left, root2->left);root1->right = traversal(root1->right, root2->right);return root1;}TreeNode* mergeTrees(TreeNode* root1, TreeNode* root2) {TreeNode* tem = traversal(root1, root2);return tem;}
};

迭代法:

class Solution {
public:TreeNode* mergeTrees(TreeNode* root1, TreeNode* root2) {if(root1 == NULL) return root2;if(root2 == NULL) return root1;queue<TreeNode*> que;que.push(root1);que.push(root2);while(!que.empty()) {TreeNode* tem1 = que.front();que.pop();TreeNode* tem2 = que.front();que.pop();tem1->val = tem1->val + tem2->val;if(tem1->left != NULL && tem2->left != NULL) {que.push(tem1->left);que.push(tem2->left);}if(tem1->right != NULL && tem2->right != NULL) {que.push(tem1->right);que.push(tem2->right);}if(tem1->left == NULL && tem2->left != NULL) {tem1->left = tem2->left;}if(tem1->right == NULL && tem2->right != NULL) {tem1->right = tem2->right;}}return root1;}
};

700、二叉搜索树中的搜索

递归法:

class Solution {
public:TreeNode* searchBST(TreeNode* root, int val) {if(root == NULL) {return NULL;}else if(root->val == val) {return root;}else if(root->val > val) {return searchBST(root->left, val);}else {return searchBST(root->right, val);}}
};

迭代法:

class Solution {
public:TreeNode* searchBST(TreeNode* root, int val) {while(root != NULL) {if(root->val == val) {return root;}else if(root->val > val) {root = root->left;}else if(root->val < val) {root = root->right;}}return NULL;}
};

98、验证二叉搜索树

递归法:

class Solution {
public:long long maxVal = LONG_MIN;bool isValidBST(TreeNode* root) {if(root == NULL) return true;bool left = isValidBST(root->left);if(maxVal >= root->val) {return false;}else {maxVal = root->val;}bool right = isValidBST(root->right);return left && right;}
};

迭代法:

class Solution {
public:bool isValidBST(TreeNode* root) {if(root == NULL) return true;stack<TreeNode*> sta;TreeNode* cur = root;TreeNode* pre = NULL;while(cur != NULL || !sta.empty()) {while(cur != NULL) {sta.push(cur);cur = cur->left;}cur = sta.top();sta.pop();if(pre != NULL && pre->val >= cur->val) {return false;}else {pre = cur;}cur = cur->right;}return true;}
};

相关文章:

  • 【JavaScript 算法】最长公共子序列:字符串问题的经典解法
  • [数据集][目标检测]导盲犬拐杖检测数据集VOC+YOLO格式4635张2类别
  • RK3568 V1.4.0 SDK,USB OTG端子不能被电脑识别出adb设备,解决
  • “信息科技风险管理”和“IT审计智能辅助”两个大模块的部分功能详细介绍:
  • 抖音seo短视频矩阵源码系统开发搭建----开源+二次开发
  • 8、添加第三方包
  • Android --- Kotlin学习之路:协程的使用,什么是协程,为什么要用协程?(学习笔记)
  • Docker 和 k8s 之间是什么关系?
  • 通义千问AI模型对接飞书机器人-模型配置(2-1)
  • HarmonyOS ArkUi @CustomDialog 和promptAction.openCustomDialog踩坑以及如何选择
  • Python--PyMySQL 库基础操作笔记
  • LeetCode热题100(JavaScript)
  • HTTP状态码(HTTP Status Code)讲解
  • k8s上部署openvpn
  • IP地址:由电脑还是网线决定?
  • CSS 三角实现
  • Flannel解读
  • JavaScript 基础知识 - 入门篇(一)
  • jdbc就是这么简单
  • JS函数式编程 数组部分风格 ES6版
  • JS数组方法汇总
  • Laravel Mix运行时关于es2015报错解决方案
  • swift基础之_对象 实例方法 对象方法。
  • 我看到的前端
  • raise 与 raise ... from 的区别
  • ​​​​​​​GitLab 之 GitLab-Runner 安装,配置与问题汇总
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • # 执行时间 统计mysql_一文说尽 MySQL 优化原理
  • #1014 : Trie树
  • #define,static,const,三种常量的区别
  • (1)(1.13) SiK无线电高级配置(六)
  • (39)STM32——FLASH闪存
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (javaweb)Http协议
  • (leetcode学习)236. 二叉树的最近公共祖先
  • (编程语言界的丐帮 C#).NET MD5 HASH 哈希 加密 与JAVA 互通
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • (十)Flink Table API 和 SQL 基本概念
  • (五)Python 垃圾回收机制
  • .net Application的目录
  • .net core webapi 部署iis_一键部署VS插件:让.NET开发者更幸福
  • .net core 使用js,.net core 使用javascript,在.net core项目中怎么使用javascript
  • .net 中viewstate的原理和使用
  • .NET3.5下用Lambda简化跨线程访问窗体控件,避免繁复的delegate,Invoke(转)
  • .NetCore 如何动态路由
  • .net反混淆脱壳工具de4dot的使用
  • @ConfigurationProperties注解对数据的自动封装
  • @property python知乎_Python3基础之:property
  • @RestControllerAdvice异常统一处理类失效原因
  • @SpringBootApplication 包含的三个注解及其含义
  • [ vulhub漏洞复现篇 ] GhostScript 沙箱绕过(任意命令执行)漏洞CVE-2019-6116
  • [ 手记 ] 关于tomcat开机启动设置问题
  • []AT 指令 收发短信和GPRS上网 SIM508/548
  • [AndroidStudio]_[初级]_[修改虚拟设备镜像文件的存放位置]