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

【Day-32慢就是快】代码随想录-二叉树-合并二叉树

给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。

你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。

思路


如何同时遍历两棵树呢???

和遍历一棵树逻辑一致,但是传入的参数为两个树的节点,同时操作。

递归

前中后序遍历都可以,以前序遍历为例:

1. 确定递归的参数和返回值

传入的参数为两颗二叉树的根节点,返回值是合并后的二叉树的根节点。

2. 确定终止条件

传入两棵树后,那么就有两个树遍历的节点t1和t2,如果 t1==NULL,则两棵树合并为 t2。 

if (t1 == NULL) return t2; // 如果t1为空,合并之后就应该是t2
if (t2 == NULL) return t1; // 如果t2为空,合并之后就应该是t1

3. 单层递归的逻辑

重复利用树 t1,t1就是合并后的树的根节点。

单层递归中,将两棵树的元素相加。

t1->left = mergeTrees(t1->left, t2->left);
t1->right = mergeTrees(t1->right, t2->right);
return t1;

合并代码:

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

重新定义一棵树作为合并后的新树:

class Solution {
public:TreeNode* mergeTrees(TreeNode* t1, TreeNode* t2) {if (t1 == NULL) return t2;if (t2 == NULL) return t1;// 重新定义新的节点,不修改原有两个树的结构TreeNode* root = new TreeNode(0);root->val = t1->val + t2->val;root->left = mergeTrees(t1->left, t2->left);root->right = mergeTrees(t1->right, t2->right);return root;}
};

http://www.lryc.cn/news/159557.html

相关文章:

  • 接口测试系列 —— 什么是接口测试?
  • qt作业day2
  • JWT一篇通
  • 【2023-09-01】vue中自定义按钮设置disabled属性后,异常触发click事件
  • nginx报错file not found解决
  • 【力扣】96. 不同的二叉搜索树 <动态规划>
  • Win11搭建 Elasticsearch 7 集群(一)
  • 哭了,python自动化办公,终于支持 Mac下载了
  • 【已更新建模代码】2023数学建模国赛B题matlab代码--多波束测线问题
  • GMSL技术让汽车数据传输更为高效(转)
  • ARM+Codesys标准通用型控制器
  • YOLOV8从零搭建一套目标检测系统(修改model结构必看)附一份工业缺陷检测数据集
  • Maven 的其它插件
  • 系列十三、Java操作RocketMQ之带Key的消息
  • C#调用Dapper
  • 2023高教杯数学建模1:ABC题目+初步想法
  • ApachePulsar原理解析与应用实践(学习笔记一)
  • 2023开学礼《乡村振兴战略下传统村落文化旅游设计》许少辉八一新书南京财经大学图书馆
  • qt 信号与槽机制,登录界面跳转
  • uniapp的两个跳转方式
  • 【LeetCode】1654:到家的最少跳跃次数的解题思路 关于力扣无法return的BUG的讨论
  • Calico IP In IP模拟组网
  • 在linux上挂载windows共享目录
  • drone的简单使用
  • day 52 | 84.柱状图中最大的矩形
  • BUUCTF刷题十一道(08)
  • 快速构建基于Paddle Serving部署的Paddle Detection目标检测Docker镜像
  • SOLIDWORKS工程图自动零件序号的极致体验
  • 将ROS bag转成CSV
  • jframe生成柱状图片+图片垂直合并+钉钉机器人推送