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

【算法与数据结构】617、LeetCode合并二叉树

文章目录

  • 一、题目
  • 二、解法
  • 三、完整代码

所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。

一、题目

在这里插入图片描述

二、解法

  思路分析:采用递归的方式遍历二叉树,【算法与数据结构】144、94、145LeetCode二叉树的前中后遍历(递归法、迭代法),递归法程序可以参考这篇文章。递归重要的是三步骤:输入参数和返回值;终止条件;单层递归逻辑
  程序如下

class Solution {
public://1、 输入参数root1 root2TreeNode* mergeTrees(TreeNode* root1, TreeNode* root2) {// 2、终止条件if (!root1) return root2;if (!root2) return root1;// 3、单层递归逻辑root1->val += root2->val;root1->left = mergeTrees(root1->left, root2->left);root1->right = mergeTrees(root1->right, root2->right);// 1、返回值 root1return root1;}
};

三、完整代码

# include <iostream>
# include <vector>
# include <string>
# include <queue>
# include <stack>
using namespace std;// 树节点定义
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://1、 输入参数root1 root2TreeNode* mergeTrees(TreeNode* root1, TreeNode* root2) {// 2、终止条件if (!root1) return root2;if (!root2) return root1;// 3、单层递归逻辑root1->val += root2->val;root1->left = mergeTrees(root1->left, root2->left);root1->right = mergeTrees(root1->right, root2->right);// 1、返回值 root1return root1;}
};// 前序遍历迭代法创建二叉树,每次迭代将容器首元素弹出(弹出代码还可以再优化)
void Tree_Generator(vector<string>& t, TreeNode*& node) {if (!t.size() || t[0] == "NULL") return;    // 退出条件else {node = new TreeNode(stoi(t[0].c_str()));    // 中if (t.size()) {t.assign(t.begin() + 1, t.end());Tree_Generator(t, node->left);              // 左}if (t.size()) {t.assign(t.begin() + 1, t.end());Tree_Generator(t, node->right);             // 右}}
}template<typename T>
void my_print(T& v, const string msg)
{cout << msg << endl;for (class T::iterator it = v.begin(); it != v.end(); it++) {cout << *it << ' ';}cout << endl;
}template<class T1, class T2>
void my_print2(T1& v, const string str) {cout << str << endl;for (class T1::iterator vit = v.begin(); vit < v.end(); ++vit) {for (class T2::iterator it = (*vit).begin(); it < (*vit).end(); ++it) {cout << *it << ' ';}cout << endl;}
}// 层序遍历
vector<vector<int>> levelOrder(TreeNode* root) {queue<TreeNode*> que;if (root != NULL) que.push(root);vector<vector<int>> result;while (!que.empty()) {int size = que.size();  // size必须固定, que.size()是不断变化的vector<int> vec;for (int i = 0; i < size; ++i) {TreeNode* node = que.front();que.pop();vec.push_back(node->val);if (node->left) que.push(node->left);if (node->right) que.push(node->right);}result.push_back(vec);}return result;
}int main()
{vector<string> t1 = { "1", "3", "5", "NULL", "NULL", "NULL", "2", "NULL", "NULL" };   // 前序遍历my_print(t1, "目标树");TreeNode* root1 = new TreeNode();Tree_Generator(t1, root1);vector<vector<int>> tree1 = levelOrder(root1);my_print2<vector<vector<int>>, vector<int>>(tree1, "目标树:");vector<string> t2 = { "2", "1", "NULL", "4", "NULL", "NULL", "3", "NULL", "7", "NULL", "NULL" };   // 前序遍历my_print(t2, "目标树");TreeNode* root2 = new TreeNode();Tree_Generator(t2, root2);vector<vector<int>> tree2 = levelOrder(root2);my_print2<vector<vector<int>>, vector<int>>(tree2, "目标树:");Solution s;TreeNode* root = s.mergeTrees(root1, root2);vector<vector<int>> tree = levelOrder(root);my_print2<vector<vector<int>>, vector<int>>(tree, "目标树:");system("pause");return 0;
}

end

相关文章:

【算法与数据结构】617、LeetCode合并二叉树

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析&#xff1a;采用递归的方式遍历二叉树&#xff0c;【算法与数据结构】144、94、145LeetCode二叉树的前中后遍历&am…...

ffmpeg把RTSP流分段录制成MP4,如果能把ffmpeg.exe改成ffmpeg.dll用,那音视频开发的难度直接就降一个维度啊

比如&#xff0c;原来我们要用ffmpeg录一段RTSP视频流转成MP4&#xff0c;我们有两种方案&#xff1a; 方案一&#xff1a;可以使用以下命令将rtsp流分段存储为mp4文件 ffmpeg -i rtsp://example.com/stream -vcodec copy -acodec aac -f segment -segment_time 3600 -reset_t…...

朝夕光年游戏自动化测试实践

朝夕光年是面向全球用户与开发者的游戏研发与发行业务品牌&#xff0c;致力于服务全球玩家&#xff0c;帮助玩家在令人惊叹的虚拟世界中一起玩耍与创造。 在游戏的研发过程中&#xff0c;游戏自动化一直是开展难度较大的工程&#xff0c;具体包括机房机架、设备调度、软件框架、…...

数据结构基本概念

一、数据 数据对象-数据元素-数据项(属性)&#xff0c;前者由后者组成 二、数据结构 定义&#xff1a;按某种关系的数据元素的集合 三、数据类型 1、原子类型&#xff08;例如整型&#xff09; 2、结构类型&#xff08;由原子类型组成&#xff0c;例如数组&#xff09; 3、…...

【javaweb】学习日记Day9 - Mybatis 基础操作

目录 一、删除 &#xff08;1&#xff09;在mapper接口执行sql删除语句 ① 注解后sql语句没有提示怎么办&#xff1f; &#xff08;2&#xff09;测试层 &#xff08;3&#xff09;开启mybatis日志 &#xff08;4&#xff09;预编译SQL 二、新增 &#xff08;1&#…...

Mybatis学习|Mybatis缓存:一级缓存、二级缓存

Mybatis缓存 MyBatis包含一个非常强大的查询缓存特性&#xff0c;它可以非常方便地定制和配置缓存。缓存可以极大的提升查询效率。 MyBatis系统中默认定义了两级缓存:一级缓存和二级缓存 默认情况下&#xff0c;只有一级缓存开启。(SqlSession级别的缓存&#xff0c;也称为本地…...

230903文本docx

处理文本 块级项目,每次文本超出右边界时都会添加一行.对段落,边界一般是页边距,但如果按列布局页,则也可是列边界,如果表格单元格内有段,则也可是单元格边界. 块级项属性指定其在页上的位置,如缩进项及段落前后间距.内联项属性一般指定显示内容的如字样,字体大小,粗体和斜体…...

Mysql-DML(数据处理语言)

-- 插入数据 insert into member values(1,张三,21,5000); insert into member(id,name) values(2,李四); insert into member values(3,王五,23,3000) ,(4,纪六,24,4000) ,(5,查七,25,5000); -- 更新&#xff08;修改数据) 不加限制条件 该字段全部修改 update member set age…...

部署项目至服务器

安装conda https://zhuanlan.zhihu.com/p/489499097 个人租借的服务器如何进行端口的开放呢&#xff1f; 防火墙设置&#xff1a; 添加规则设置&#xff1a; 即可&#xff1b; 通常下租借的服务器没有防火墙设置 相关链接&#xff1a; https://blog.csdn.net/weixin_4520…...

OSI与TCP IP各层的结构与功能,都有哪些协议

分析&回答 OSI七层模型 层功能TCP/IP协议族应用层文件传输&#xff0c;电子邮件&#xff0c;文件服务&#xff0c;虚拟终端TFTP&#xff0c;HTTP&#xff0c;SNMP&#xff0c;FTP&#xff0c;SMTP&#xff0c;DNS&#xff0c;Telnet表示层数据格式化&#xff0c;代码转换…...

【2023年11月第四版教材】第10章《进度管理》(第三部分)

第10章《进度管理》&#xff08;第三部分&#xff09; 7 估算活动持续时间7.1 估算活动持续时间7.2 类比估算★★★7.3 参数估算★★★7.4 三点估算★★★7.5 数据分析★★★ 7 估算活动持续时间 组过程输入工具和技术输出计划4,估算活动持续时间1.项目管理计划&#xff08;进…...

【Vuex状态管理】Vuex的基本使用;核心概念State、Getters、Mutations、Actions、Modules的基本使用

目录 1_应用状态管理1.1_状态管理1.2_复杂的状态管理1.3_Vuex的状态管理 2_Vuex的基本使用2.1_安装2.2_创建Store2.3_组件中使用store 3_核心概念State3.1_单一状态树3.2_组件获取状态3.3_在setup中使用mapState 4_核心概念Getters4.1_getters的基本使用4.2_getters第二个参数4…...

Linux centos7 bash编程(循环与条件判断)

在编程训练中&#xff0c;循环结构与条件判断十分重要。 根据条件为真为假确定是否执行循环。 有时&#xff0c;根据条件的真假结果&#xff0c;决定执行哪些语句&#xff0c;这就是分支语句。 为了训练分支语句与循环语句&#xff0c;我们设计一个案例&#xff1a; 求一组…...

设计模式-6--装饰者模式(Decorator Pattern)

一、什么是装饰者模式&#xff08;Decorator Pattern&#xff09; 装饰者模式&#xff08;Decorator Pattern&#xff09;是一种结构型设计模式&#xff0c;它允许你在不修改现有对象的情况下&#xff0c;动态地将新功能附加到对象上。这种模式通过创建一个包装类&#xff0c;…...

质量属性案例-架构真题(二十一)

试题一 某电子商务公司升级会员与促销管理系统&#xff0c;向用户提交个性化服务&#xff0c;提高用户粘性。在项目建立之初&#xff0c;公司领导人一致认为目标是提升会员管理方式的灵活性&#xff0c;由于当前用户规模不大&#xff0c;用户简单&#xff0c;系统方面不需要做…...

nacos Error to process server push response

nacos2.0.3报错&#xff1a; Error to process server push response 解决办法&#xff1a; 排查项目当中有没有直接或间接依赖reflections&#xff1a; <dependency><groupId>org.reflections</groupId><artifactId>reflections</artifactId>…...

神经网络NLP基础 循环神经网络 LSTM

用的时候&#xff0c;只关心token的输入&#xff0c;以及hidden state就好了 sequence的length是多少&#xff0c;lstm的cell的数量就是多少 LSTM BI-LSTM stacked lstm GRU 实现...

Oracle数据传输加密方法

服务器端“dbhome_1\NETWORK\ADMIN\”sqlnet.ora文件中添加 SQLNET.ENCRYPTION_SERVER requested SQLNET.ENCRYPTION_TYPES_SERVER (RC4_256) 添加后新的链接即刻生效&#xff0c;服务器无需重新启动。 也可以通过Net manager管理工具添加 各个参数含义如下&#xff1a; 是…...

Android列表片段

下面创建第二个片段WorkoutFragment&#xff0c;它包含不同训练项目构成的一个列表&#xff0c;用户可以从这个列表中选择训练项目。 列表视图是只包含一个列表的片段 列表片段是一种专门处理列表的片段&#xff0c;它会自动绑定到一个列表视图&#xff0c;所以不需要另外创建…...

【元宇宙】智能手机万岁

凭借出色的新设备&#xff0c;我们很快就能进人元字宙&#xff0c;想象这样的情景是很趣的。但是&#xff0c;至少到21世纪20年代&#xff0c;元宇宙时代的大多数设备很可能是我们已经在使用的设备。 AR 和 VR 设备不仅面临重大的技术、财务和体验障碍&#xff0c;而且它们在上…...

2026最新!录音软件哪个最好用?4款亲测免费实用神器,避坑省钱真香!

做内容的要整理访谈&#xff0c;职场要记会议纪要&#xff0c;学生要转课堂录音&#xff0c;做调研的要整理访谈录音——不同人群需求不一样&#xff0c;但核心诉求都是&#xff1a;准、快、不瞎收钱。我花了一周亲测4款热门录音转写工具&#xff0c;直接给结论&#xff1a;听脑…...

在OpenClaw中配置Taotoken作为你的AI Agent核心提供商

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 在OpenClaw中配置Taotoken作为你的AI Agent核心提供商 如果你正在使用OpenClaw构建AI工作流&#xff0c;并希望获得更灵活的模型选…...

基于合宙Air001的交互式地球名片:从硬件焊接、Arduino编程到触摸优化

1. 项目概述与核心思路最近在创客圈子里&#xff0c;合宙的Air001开发板可以说是火得一塌糊涂。包装设计得挺酷&#xff0c;价格更是香到没朋友&#xff0c;最关键的是它完美支持Arduino IDE开发&#xff0c;对于咱们这些习惯了Arduino生态的玩家来说&#xff0c;上手门槛几乎为…...

CTF学习规划————1、如何入门CTF

CTF学习规划————1、如何入门CTF 无意中发现了一个巨牛巨牛的人工智能教程&#xff0c;忍不住分享一下给大家。教程不仅是零基础&#xff0c;通俗易懂&#xff0c;小白也能学&#xff0c;而且非常风趣幽默&#xff0c;还时不时有内涵段子&#xff0c;像看小说一样&#xff0…...

个人收款新选择:主流免签支付平台深度评测与避坑指南

1. 个人收款困境与免签支付崛起 做个人站长最头疼的问题是什么&#xff1f;十有八九会提到收款难。我做了5年独立博客&#xff0c;早期靠爱发电&#xff0c;后来想接点广告、卖点电子书&#xff0c;结果发现微信支付和支付宝压根不向个人开放支付接口。去年我的Python教程被疯传…...

入库篇:仓库里的货从哪来?——WMS货品来源全解析,物流新人必读

仓库里的货从哪来&#xff1f;——WMS货品来源全解析&#xff0c;物流新人必读 摘要&#xff1a;每天在WMS系统里看到成百上千的库存记录&#xff0c;但你想过没有——这些货品最初是怎么进入系统的&#xff1f;是采购进来的&#xff1f;生产出来的&#xff1f;客户退回来的&am…...

基于SpringBoot的汽车美容养护管理系统的设计与开发

一、选题依据和意义 &#xff08;一&#xff09;选题依据 随着国内汽车保有量持续攀升&#xff0c;汽车后市场规模不断扩大&#xff0c;汽车美容养护行业迎来快速发展期&#xff0c;但行业整体仍存在管理效率低下、服务流程不规范等问题[1]。传统管理模式依赖人工记录客户信息…...

Android本地代理服务器droidproxy:原理、部署与流量分析实战

1. 项目概述与核心价值最近在折腾Android应用网络调试和流量分析时&#xff0c;发现了一个挺有意思的开源项目——anand-92/droidproxy。简单来说&#xff0c;这是一个运行在Android设备上的HTTP/HTTPS代理服务器。你可能觉得&#xff0c;代理工具不是满大街都是吗&#xff1f;…...

批量处理二维码图片,真的需要联网吗?这款离线高效工具给你答案!

批量处理二维码图片&#xff0c;真的需要联网吗&#xff1f;这款离线高效工具给你答案&#xff01; 【免费下载链接】QrScan 离线批量检测图片是否包含二维码以及识别二维码 项目地址: https://gitcode.com/gh_mirrors/qrs/QrScan 想象一下这个场景&#xff1a;公司市场…...

探索DeepMosaics:当AI遇见图像隐私保护与修复的艺术

探索DeepMosaics&#xff1a;当AI遇见图像隐私保护与修复的艺术 【免费下载链接】DeepMosaics Automatically remove the mosaics in images and videos, or add mosaics to them. 项目地址: https://gitcode.com/gh_mirrors/de/DeepMosaics 在数字内容创作与分享日益普…...