【代码随想录day20】合并二叉树

news2024/11/19 3:48:02

题目 

给你两棵二叉树: root1 和 root2 。

想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会)。你需要将这两棵树合并成一棵新二叉树。合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;否则,不为 null 的节点将直接作为新二叉树的节点。

返回合并后的二叉树。

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

示例 1:

输入:root1 = [1,3,2,5], root2 = [2,1,3,null,4,null,7]
输出:[3,4,5,5,4,null,7]

思路 

此题也是建树的题,做了几道建树的题,感觉流程都差不多,都是:

  1. 确定递归出口及类型:如果root1和root2都为空,说明合并之后也为空;如果有一个不为空,则应该直接返回不为空的那个节点;如果两个都不为空,则应当用root1.val+root2.val去创建新节点
  2. 找到当前需要新建的节点root
  3. 递归建树,也就是root.left = 递归()、root.right = 递归() 
# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def mergeTrees(self, root1: Optional[TreeNode], root2: Optional[TreeNode]) -> Optional[TreeNode]:
        if not root1 and not root2:
            return 
        if not root1:
            return root2
        if not root2:
            return root1
        root = TreeNode(root1.val+root2.val)
        root.left = self.mergeTrees(root1.left,root2.left)
        root.right = self.mergeTrees(root1.right,root2.right)
        return root

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/791319.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Redis在云服务器上的安装与客户端连接配置

文章目录 Redis1.Redis的安装2.设置远程连接3.客户端连接3.1 客户端下载 Redis 1.Redis的安装 yum 安装 redis,使用以下命令,直接将 redis 安装到 linux 服务器: yum -y install redis 启动 redis使用以下命令,以后台运行方式启…

面试之CurrentHashMap的底层原理

首先回答HashMap的底层原理? HashMap是数组链表组成。数字组是HashMap的主体,链表则是主要为了解决哈希冲突而存在的。要将key 存储到(put)HashMap中,key类型实现必须计算hashcode方法,默认这个方法是对象的地址。接…

git账号修改密码后命令不能拉取代码,报错无权限

解决办法: 1.git命令 查看账号密码,修改密码,如下图 2.设置window git 凭证 3. 完成 ,git命令拉去代码成功

九五从零开始的运维之路(其二十五)

文章目录 前言一、概述二、配置环境及搭建服务1.关闭防火墙、网络图形化工具及SElinux2.配置yum源3.测试网络连通性4.分配磁盘容量5.安装targetcli包6.服务器端进行配置7.客户端 总结 前言 本篇将简述的内容:Linux系统下的ISCSI服务 一、概述 iscsi全称&#xff1…

Spring Boot实践一

一、Spring Boot简介 Spring Boot是一个基于Spring框架的快速开发应用程序的工具。它提供了一种快速、方便的方式来创建基于Spring的应用程序,而无需繁琐的配置。Spring Boot通过自动配置和约定大于配置的方式,使得开发者可以更加专注于业务逻辑的实现&…

电容笔和触控笔两者有哪些区别?比较好用的电容笔

与最初推出的那些触控笔相比,目前的电容笔更具有一些独特的特性,比如可以防止手在屏幕上误触,以及可以随意调节线条粗细。苹果的原装Pencil的价格目前也非常昂贵。因此,如果你没有足够的预算,那么你最好选择一支平替电…

装修行业专用装修设计施工团队工地进度小程序开发

互联网高速发展带来的就是大家越来越依赖互联网,从衣食住行都在向互联网整合​。传统的装修行业借助互联网也诞生了新的营销引流​方法。 以前装修房子大家都会参考邻居、朋友、亲戚,但现在不同了,互联网帮助很多人在线上了解装修公司、装修…

探讨ChatGPT的强化学习:AI学习与交互的未来

🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~&#x1f33…

Vue3学习组合式API(二)

1、计算属性compute <script setup> //导入 import {ref, computed } from vue const state ref(0) //原始数据 const count ref(1); //计算属性 const doubleCount computed(()>count.value*2);//原始数据 const list ref([1,2,3,4,5,6,7,8]); //list属性值 con…

【Linux】详解线程控制 -- 线程用法 | 线程等待 | 线程ID及地址空间布局

OS提供的轻量级进程接口POSIX线程库 线程使用1.如何创建一堆线程2.线程如何终止3.线程如何取消 线程等待线程退出返回值C11的多线程线程ID及地址空间布局线程地址空间布局线程局部存储 分离线程 OS提供的轻量级进程接口 (关于 用户 → 库 → OS :具体可看下面线程地址空间布局)…

好用亦免费的系统镜像备份软件!

​Windows系统现状 Windows系统备份的重要性日益凸显。随着Windows 7退出历史舞台,Windows 11/10的使用率快速上升。新电脑不再支持Windows 7,许多用户只能转向更新系统。加之Windows 11功能趋于成熟稳定,越来越多人开始适应并接受它。 因此,选择一个适合Windo…

马上做还是等一下?

马上做还是等一下&#xff1f;这是一个产品人经常会遇到的问题。今天想跟大家分享的是面临这两个选择的两个场景和一些感悟。 图1 - 我们总会遇到各种各样的问题&#xff0c;难以抉择 场景一&#xff1a;当你接到一项工作时&#xff0c;会选择高效执行马上开始&#xff0c;还是…

前端图标解决方案

1. 前言 随着 Web 技术的发展与日益丰富的界面需求&#xff0c;图标逐渐成为前端开发中不可或缺的一部分&#xff0c;为此也诞生了各种各样的解决方案。文章总结及分析了目前常见的一些图标解决方案。 2. CSS 背景图片 2.1 background-image 图标本质上也是图片&#xff0c…

子网划分和计网解题方法

子网的基本概念 子网是计算机网络中的一个逻辑单元&#xff0c;是由多个IP地址组成的网络。在计算机网络中&#xff0c;IP地址是一个32位的二进制数&#xff0c;用于标识网络上的设备。子网划分是将一个大型的IP地址网络划分为多个小的IP地址网络&#xff0c;每个小的IP地址网…

软件外包开发的项目管理工具

在开发大型项目时涉及到多人管理&#xff0c;细节比较多&#xff0c;需要借助科学的项目管理方法和软件工具来提高软件项目效率。现在有比较多的项目管理方法和配套工具&#xff0c;每个项目和团队的情况不同&#xff0c;选择适合自己的是最重要的。今天和大家分享软件项目管理…

小程序新渲染引擎 Skyline 发布正式版

为了进一步提升小程序的渲染性能和体验&#xff0c;我们推出了一套新渲染引擎 Skyline&#xff0c;现在&#xff0c;跟随着基础库 3.0.0 发布 Skyline 正式版。 我们知道&#xff0c;小程序一直用 WebView 来渲染界面&#xff0c;因其有不错的兼容性和丰富的特性&#xff0c;且…

【通世智库】陈敏华:永存我心的爱——忆我的丈夫陶一凡

​ 2022年12月25日&#xff0c;我敬爱的丈夫&#xff0c;平静安然的告别了眷恋着他的亲友们&#xff0c;走了。 72年前&#xff0c;在上海致远中学上学不满16岁的陶一凡&#xff0c;毅然弃笔从戎&#xff0c;随志愿军跨过鸭绿江&#xff0c;奔赴朝鲜战场。他说过&#xff0c;12…

企业通过CRM分析销售数据有什么用处?

企业为什么要分析CRM销售数据&#xff1f;分析CRM销售数据的目的&#xff0c;是为企业提供对其销售业绩、客户行为和市场趋势的宝贵见解。通过分析这些数据&#xff0c;企业可以确定他们表现良好的领域和需要改进的领域。 1、销售业绩 通过分析CRM销售数据&#xff0c;企业可…

云计算——ACA学习 数据中心概述

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​ 目录 写在前面 课程目标 学前了解 一.数据中心定义 二.数据中心涉及的主要标准与规范 …

adas知识

车辆坐标系 右手坐标系&#xff0c;红色箭头方向角度为正。 传感器坐标系&#xff08;如相机&#xff09;