Leetcode 617.合并二叉树(简单) 树的递归遍历

Java实现 LeetCode 617 合并二叉树(遍历树) 617. 合并二叉树 给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。 你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。 示例 1: 输入: Tree 1 Tree 2 ... 阅读详情

题目描述:

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

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

示例 1:

输入:
    Tree 1                     Tree 2                  
          1                         2                             
         / \                       / \                            
        3   2                     1   3                        
       /                           \   \                      
      5                             4   7                  
输出:
合并后的树:
         3
        / \
       4   5
      / \   \
     5   4   7

注意: 合并必须从两个树的根节点开始。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/merge-two-binary-trees

思路:1、递归。先序遍历,当结点同时不空相加;有一个为空,返回另一个;同时为空return。

          2、迭代。

我们也可以用迭代的方法解决这个问题。

我们首先把两棵树的根节点入栈,栈中的每个元素都会存放两个根节点,并且栈顶的元素表示当前需要处理的节点。

在迭代的每一步中,我们取出栈顶的元素并把它移出栈,并将它们的值相加。

随后我们分别考虑这两个节点的左孩子和右孩子,如果两个节点都有左孩子,那么就将左孩子入栈;

如果只有一个节点有左孩子,那么将其作为第一个节点的左孩子;如果都没有左孩子,那么不用做任何事情。

对于右孩子同理。

最后我们返回第一棵树的根节点作为答案。

作者:LeetCode
 

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */

//遍历不空就相加
struct TreeNode* mergeTrees(struct TreeNode* t1, struct TreeNode* t2){
    if(t1 && t2){
        t1->val += t2->val;
        t1->left = mergeTrees(t1->left, t2->left);
        t1->right = mergeTrees(t1->right, t2->right);
    }
    else if(t1 == NULL){
        return t2;
    }
    else if(t2 == NULL){
        return t1;
    }
    return t1;
}

 

【华为2021校招】笔试题【通用硬件】 时间:2020/07/15 19:00 时长:60min 题型:40单选+5多选 难度:中等 考察范围:模电、数电、SI、EMC、电源、微机原理、计算机网络、材料 阅读详情

相关推荐

告别信号毛刺!手把手教你用ADS和IBIS-AMI模型搞定PCIe Gen3眼图仿真

本文详细介绍了如何使用Keysight ADS和IBIS-AMI模型进行PCIe Gen3眼图仿真,解决高速信号传输中的信号质量问题。从仿真环境搭建、S参数预处理到眼图优化与故障排除,提供了一套完整的工程实践指南,帮助工程师提升PCIe Gen3接口的信号完整性。

weixin_28366053的博客 370

树形结构:二叉树,分治,合并子树,递归

我们学习树的时候,一些地方用到了递归,但是可能没意识到这里面都是分治的思想 ============================================================================= 结合这几个例子,体会一下树形结构 树本来就是一个天然的递归结构,每一个递归都对应着一个递归树 就二叉树而言,每一个二叉树对应着一个左子树,一个右子树 都不用我们思考怎么...

weixin_40759186的博客 881

FreeCAD MCP实战:用AI自然语言驱动CAD建模与自动化

在计算机辅助设计(CAD)领域,参数化建模和自动化脚本是提升设计效率的核心技术。其原理在于通过程序化指令控制三维模型的创建与修改,从而将设计意图转化为精确的几何实体。这种技术价值在于显著降低重复性操作成本,实现快速原型迭代和设计探索。在应用场景上,它尤其适用于需要频繁调整尺寸、生成系列化零件或执行规则化建模任务的工程与产品设计。本文聚焦的FreeCAD MCP项目,正是这一理念的先进实践。它通过集成Model Context Protocol(MCP),构建了一个连接Claude AI与FreeCAD的智能

weixin_26913055的博客 724

leetcode 617.合并二叉树【递归连接二叉树】

执行用时 :40 ms, 在Merge Two Binary Trees的C++提交中击败了99.62%的用户 内存消耗 :13.8 MB, 在Merge Two Binary Trees的C++提交中击败了84.32%的用户 递归使用二叉树,进行连接。千万不要使用new!!!! 千万不要单独或者多余地判断!!! /** * Definition for a binary ...

二十四桥明月夜的博客 190

告别单一查询!MultiQueryRetriever在LangChain中的高级用法解析

本文深入解析了LangChain中的MultiQueryRetriever高级用法,该工具通过大语言模型自动生成多样化查询,显著提升文档检索的召回率和准确性。文章详细介绍了其核心机制、高级配置调优策略以及在多语言和专业领域中的实际应用,为开发者提供了优化知识库问答系统的实用方案。

weixin_28730927的博客 271

qemu-system-aarch64参数详解与实战配置指南

本文详细解析了qemu-system-aarch64的核心参数,包括-machine、cpu、smp、m、drive和netdev等关键配置。通过嵌入式内核调试、完整系统运行和外设模拟三大实战场景,提供可直接使用的配置示例与性能优化技巧,帮助开发者在x86主机上高效构建和调试ARM64虚拟环境。

weixin_29197051的博客 352

LeetCode 617.合并二叉树

给你两棵二叉树: root1 和 root2 。 想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会)。你需要将这两棵树合并成一棵新二叉树。合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;否则,不为 null 的节点将直接作为新二叉树的节点。 返回合并后的二叉树。 注意: 合并过程必须从两个树的根节点开始。

2301_80211119的博客 1144

Python自动化:3分钟搞定微信收藏链接批量导出到TXT(附完整代码)

本文介绍如何使用Python自动化工具在3分钟内将微信收藏链接批量导出到TXT文件。通过模拟人类操作和OCR技术,脚本高效处理大量链接,显著提升工作效率,并附有完整代码和实战避坑指南。

weixin_29062671的博客 630

617. 合并二叉树

合并二叉树,也是二叉树操作的经典题目,如果没有接触过的话,其实并不简单,因为我们习惯了操作一个二叉树,一起操作两个二叉树,还会有点懵懵的。迭代法中,一般一起操作两个树都是使用队列模拟类似层序遍历,同时处理两个树的节点,这种方式最好理解,如果用模拟递归的思路的话,要复杂一些。

YouMing_Li的博客 1102

PADS安装教程(超详细)

声明:个人实践 一、工具准备 pads9.5完整破解版百度网盘提取码【wjx9】 链接:https://pan.baidu.com/s/1pIP6BJO435ssmF7Hjwyz8A 提取码:wjx9 安装环境:win10 64位 二、开始解压安装 关闭杀毒,exe以管理员身份运行 点击【skip】,不然又得licese 点击【agree】 点击【modify】 设置安装的工具、路径及工程路径 设置完成后,开始【install】 在之后注册。 将Crack复制到PADS安装目录

qq_42057393的博客 5万+

C#:实现统计图像主颜色的算法(附完整源码)

C#:实现统计图像主颜色的算法(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 519

LeetCode 图解 | 617.合并二叉树

文 |景禹来源:图解面试算法「ID: LeetCodeAnimation」题目来源于 LeetCode 上第 617 号问题:合并二叉树。题目难度为 Easy,目前通过率为 75.9%...

程序员吴师兄的博客 1378

YOLOv8改进 | 融合篇,YOLOv8主干改进融合网络之MobileNetV3+CA注意机制,助力涨点

MobileNetV3通过结合硬件感知网络架构搜索(NAS)和NetAdapt算法,通过新颖的架构改进进一步提升了性能。YOLOv8中的主干网络替换成MobileNetV3+引入CA注意机制

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 1881

C++力扣题目617--合并二叉树

合并二叉树,也是二叉树操作的经典题目,如果没有接触过的话,其实并不简单,因为我们习惯了操作一个二叉树,一起操作两个二叉树,还会有点懵懵的。这不是我们第一次操作两棵二叉树了,在二叉树:我对称么?中也一起操作了两棵二叉树。迭代法中,一般一起操作两个树都是使用队列模拟类似层序遍历,同时处理两个树的节点,这种方式最好理解,如果用模拟递归的思路的话,要复杂一些。最后拓展中,我给了一个操作指针的野路子,大家随便看看就行了,如果学习C++的话,可以再去研究研究。

weixin_47675625的博客 1090

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

leetcode617. 合并二叉树

给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。 你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为NULL 的节点将直接作为新二叉树的节点。 示例1: 输入: Tree 1 Tree 2 ...

少说,多做。 4901

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

【详细整理】二叉树的遍历+力扣617合并二叉树 226翻转二叉树

文章目录一、二叉树遍历构架二、遍历举例三、遍历架构实操——力扣题1、617 合并二叉树(1)题目:(2)分析解答2、226翻转二叉树(1)题目(2)分析解答 一、二叉树遍历构架 刚开始刷二叉树的题,边刷边学,第一次接触二叉树,递归真是看得人:我是谁 我在哪,整理一下今天学的内容,复习同时以便以后自己查阅。如果有错误或者疏漏,欢迎大家补充交流。 二叉树遍历构架: void traverse(TreeNode root){ if(root == null){ retur

m0_37636691的博客 296

LeetCode617. 合并二叉树——递归和迭代

合并二叉树的本质是同步遍历。递归解法最优雅,适合绝大多数情况。迭代解法使用队列实现 BFS,可以规避栈溢出风险。注意空节点处理:只要有一个节点非空,就需要继续向下合并。

yc2284238579的博客 383

【leetcode】617. 合并二叉树

【leetcode】617. 合并二叉树题目思路代码 题目 leetcode原题链接 给你两棵二叉树: root1 和 root2 。 想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会)。你需要将这两棵树合并成一棵新二叉树。合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;否则,不为 null 的节点将直接作为新二叉树的节点。 返回合并后的二叉树。 注意: 合并过程必须从两个树的根节点开始。 示例 1: 输入:root1 = [1,3

laplacepoisson的博客 248

代码随想录算法训练营Day15 | Leetcode 654最大二叉树、617合并二叉树、700二叉搜索树中的搜索、98验证二叉搜索树

给你两棵二叉树: root1 和 root2。想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会)。你需要将这两棵树合并成一棵新二叉树。返回合并后的二叉树。你需要在 BST 中找到节点值等于 val 的节点。返回以该节点为根的子树。给定一个不重复的整数数组 nums。给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。给定二叉搜索树(BST)的根节点 root 和一个整数值 val。返回 nums 构建的 最大二叉树。

叽里呱啦大王的博客 1458

LeetCode617. 合并二叉树

本文为LeetCode617. 合并二叉树解析,欢迎学习!

Toby的博客 152

617.合并二叉树

摘要 合并两棵二叉树的规则是:对应节点值相加,若某节点在一棵树中为null则直接取另一棵树的节点。可通过递归或迭代实现: 递归法:若任一节点为空则返回另一节点;否则节点值相加后递归处理左右子树。 迭代法:使用队列同步遍历两树,节点值相加后处理子节点,若一方缺失则直接链接另一方的子树。 复杂度:时间O(min(m,n)),空间O(min(m,n))(递归栈或队列深度)。 示例:输入root1 = [1,3,2,5],root2 = [2,1,3,null,4,null,7]时,合并结果为[3,4,5,5,4,

m0_68880377的博客 859

【LeetCode】617. 合并二叉树

题目 给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。 你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为NULL 的节点将直接作为新二叉树的节点。 示例1: 输入: Tree 1 Tree 2 1 2 ...

jiiiiiaaaa的博客 719

合并二叉树(3种解法)

合并二叉树(力扣:617),3种解法实现

卜大爷的博客 2万+

LeetCode 617. 合并二叉树 做题笔记

题目·: 给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。 你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。 示例 1: 输入: Tree 1 Tree 2 1 2

阿拉修 2549

「leetcode」617. 合并二叉树:【三种递归】【一种迭代】详解

需要一起操作两个二叉树了

代码随想录 476
上一篇: Leetcode 605.种花问题(简单)
下一篇: Leetcode 665.非递减数列(简单)
Perrysky
博客等级 码龄11年 16粉丝 85原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值