617. 合并二叉树

617. 合并二叉树

  • 原题链接:
  • 完成情况:
  • 解题思路:
  • 参考代码:
    • _617合并二叉树_使用队列迭代
    • _617合并二叉树_使用栈迭代
  • 错误经验吸取

原题链接:

617. 合并二叉树

https://leetcode.cn/problems/merge-two-binary-trees/description/

完成情况:

在这里插入图片描述

解题思路:

参考代码:

_617合并二叉树_使用队列迭代

package 代码随想录..二叉树;

import 代码随想录..TreeNode;

import java.util.Deque;
import java.util.LinkedList;

public class _617合并二叉树_使用队列迭代 {
    /**
     *
     * @param root1
     * @param root2
     * @return
     */
    public TreeNode mergeTrees(TreeNode root1, TreeNode root2) {
        if (root1 == null){
            return root2;
        }
        if (root2 == null){
            return root1;
        }
        Deque<TreeNode> myQueue = new LinkedList<TreeNode>();
        myQueue.offerLast(root1);
        myQueue.offerLast(root2);
        while (!myQueue.isEmpty()) {
            TreeNode node1 = myQueue.pollFirst();
            TreeNode node2 = myQueue.pollFirst();
            // 此时两个节点一定不为空,val相加
            node1.val = node1.val + node2.val;
            // 如果两棵树左节点都不为空,加入队列
            if (node1.left != null && node2.left != null){
                myQueue.offerLast(node1.left);
                myQueue.offerLast(node2.left);
            }
            // 如果两棵树右节点都不为空,加入队列
            if (node1.right != null && node2.right != null){
                myQueue.offerLast(node1.right);
                myQueue.offerLast(node2.right);
            }
            // 若node1的左节点为空,直接赋值
            if (node1.left == null && node2.left != null){
                node1.left = node2.left;
            }
            // 若node1的右节点为空,直接赋值
            if (node1.right == null && node2.right != null){
                node1.right = node2.right;
            }
        }
        return root1;
    }
}

_617合并二叉树_使用栈迭代

package 代码随想录..二叉树;

import 代码随想录..TreeNode;

import java.util.ArrayDeque;
import java.util.Deque;

public class _617合并二叉树_使用栈迭代 {
    /**
     *
     * @param root1
     * @param root2
     * @return
     */
    public TreeNode mergeTrees(TreeNode root1, TreeNode root2){
        if(root1 == null){
            return root2;
        }
        if (root2 == null){
            return root1;
        }
        Deque<TreeNode> myStack = new ArrayDeque<TreeNode>();
        myStack.push(root2);
        myStack.push(root1);
        while (!myStack.isEmpty()){
            TreeNode node1 = myStack.pop();
            TreeNode node2 = myStack.pop();
            node1.val += node2.val;
            if (node2.right != null && node1.right != null){
                myStack.push(node2.right);
                myStack.push(node1.right);
            }else {
                if (node1.right == null){
                    node1.right = node2.right;
                }
            }
            if (node2.left != null && node1.left != null){
                myStack.push(node2.left);
                myStack.push(node1.left);
            }else {
                if (node1.left == null){
                    node1.left = node2.left;
                }
            }
        }
        return root1;
    }
}

错误经验吸取

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Intellij Idea 断点小圆变成灰色怎么处理

场景1&#xff1a;变成了灰色实心圆 原因 断点变成灰色通常表示该断点处于失效状态。这可能是由于无意中点击了debug调试下方的“mute breakpoints”按钮导致的。 解决方案 依次点击设置小图标->View Options->Mute BreakPoints. 点击后 Mute BrakPoints左侧显示✔ 符号…

Redis基础——入门数据类型常用命令Java中操作Redis

这里写目录标题 1. 前言1.1 什么是Redis1.2 使用Redis能做什么 2. Redis入门2.1 Redis简介2.2 Redis下载与安装2.2.1 Redis下载2.2.2 Redis安装 2.3 Redis服务启动与停止2.4 Redis配置文件 3. Redis数据类型3.1 介绍3.2 Redis 5种常用数据类型 4. Redis常用命令4.1 字符串strin…

动起来,数据不散漏:上海迅软DSE助您解锁员工外带电脑信息安全新境界!

笔记本电脑作为企业数据泄密主要的途径之一&#xff0c;当员工携带着存放企业重要技术资料的笔记本在外办公时&#xff0c;很容易由于频繁的流动性让数据面临着丢失、恶意泄密等巨大风险&#xff0c;对此企事业单位需要通过一定的管理手段加以安全防护管控。 迅软DSE解决方案 一…

2023机器人灵巧手的分类与商业化应用及未来市场规模分析报告

今天分享的是机器人系列深度研究报告&#xff1a;《2023机器人灵巧手的分类与商业化应用及未来市场规模分析报告》。 &#xff08;报告出品方&#xff1a;深度行业分析研究&#xff09; 报告共计&#xff1a;26页 1 灵巧手是人形机器人重要的运控交互部件&#xff0c;近年来海…

深入理解CSS变量:高级技巧和最佳实践

前言 CSS 变量是一项强大的功能&#xff0c;它可以帮助开发人员更好地组织和管理样式表。在本文中&#xff0c;我们将深入探讨 CSS 变量的高级技巧和最佳实践&#xff0c;通过学习如何使用变量作为计算值、媒体查询和动态更改等方面&#xff0c;你将能够更好地利用 CSS 变量的强…

机器视觉 AI 数据集制作

工业中&#xff0c;机器视觉物体分拣时&#xff0c;需要制作&#xff0c;数据集&#xff0c;那么&#xff0c;一般情况下&#xff0c;可以选择几个物体的几张图片&#xff0c;或者视频&#xff0c;将待识别的物体的掩模扣取出来&#xff0c;随机的贴在 传送带背景中&#xff0c…

【23真题】大题全原题的211!题源已定位!

今天分享的是23年长安大学814的信号与系统试题及解析。 本套试卷难度分析&#xff1a;22年长安大学814考研真题&#xff0c;我也发布过&#xff0c;若有需要&#xff0c;戳这里自取&#xff01;本套试题难度中等偏下&#xff0c;题量偏多&#xff0c;考察的知识点也是很常见的…

华为OD机试 - 围棋的气(Java JS Python C)

题目描述 围棋棋盘由纵横各19条线垂直相交组成,棋盘上一共19 x 19 = 361 个交点,对弈双方一方执白棋,一方执黑棋,落子时只能将棋子置于交点上。 “气”是围棋中很重要的一个概念,某个棋子有几口气,是指其上下左右方向四个相邻的交叉点中,有几个交叉点没有棋子,由此可…

Lazada测评怎么做?

国内电商行业的发展日趋激烈&#xff0c;卖家想要脱颖而出非常困难&#xff0c;许多卖家选择入驻跨境电商平台开店&#xff0c; 跨境电商平台吸引了许多卖家入驻&#xff0c;而最近有很多朋友在私信问我关于Lazada测评的一些事情 Lazada产品测评流程步骤 怎么测评 这个怎么测…

特斯拉开源 Roadster 文件随便用;微软 Copilot AI 技术开放或不对大陆开放丨 RTE 开发者日报 Vol.92

开发者朋友们大家好&#xff1a; 这里是 「RTE 开发者日报」 &#xff0c;每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE &#xff08;Real Time Engagement&#xff09; 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文…

空间统计分析

一、实验名称&#xff1a; 空间统计分析 二、实验目的&#xff1a; 通过本实验练习&#xff0c;掌握空间统计分析的基本方法。 三、实验内容和要求&#xff1a; 实验内容&#xff1a; 利用ARCGIS软件相关分析工具及实验数据&#xff08;某城市各个社区的家庭平均年收入&a…

自动驾驶学习笔记(十二)——定位技术

#Apollo开发者# 学习课程的传送门如下&#xff0c;当您也准备学习自动驾驶时&#xff0c;可以和我一同前往&#xff1a; 《自动驾驶新人之旅》免费课程—> 传送门 《Apollo Beta宣讲和线下沙龙》免费报名—>传送门 文章目录 前言 卫星定位 RTK定位 IMU定位 GNSS定…

卸载软件最最最彻底的工具——Uninstall Tool

卸载软件最最最彻底的工具——Uninstall Tool Uninstall Tool 是一款功能强大的专业卸载工具。针对一些普通卸载不彻底的问题&#xff0c;它可以做到最优&#xff0c;比如Matlab等软件的卸载难的问题也可以较好地解决。 它比 Windows 自带的“添加/删除程序”功能快 3 倍&…

MySQL数据库如何应对故障恢复与数据恢复回滚

一个最基本的数据库&#xff0c;应当可以做到以下几点 数据持久化&#xff0c;可以将数据保存到磁盘&#xff0c;服务重启数据依然存在。 可以按照某种关系存储数据&#xff0c;如果你用过IO流&#xff0c;那么你会发现整理数据也是一件复杂的事情。我是该追加写呢还是找到某条…

英语语法:连词or, and, if, unless怎么用?

连词or, and, if, unless怎么用&#xff1f;1. or conj. 或者&#xff0c;还是&#xff0c; 和&#xff0c; 否则用法&#xff1a;并列连词①当“或者&#xff0c;还是”讲时&#xff0c;用在选择疑问句中&#xff0c;是选择疑问句的标志例&#xff1a;Are you a teacher or a …

NX二次开发UF_CURVE_create_arc_center_radius 函数介绍

文章作者&#xff1a;里海 来源网站&#xff1a;https://blog.csdn.net/WangPaiFeiXingYuan UF_CURVE_create_arc_center_radius Defined in: uf_curve.h int UF_CURVE_create_arc_center_radius(tag_t center, double radius, tag_t help_point, UF_CURVE_limit_p_t limit_p…

算法通关第十七关青铜挑战——原来贪心如此简单(什么是贪心思想and经典例题分析)

大家好&#xff0c;我是怒码少年小码。 一转眼&#xff0c;又到了11月末尾了&#xff0c;莫名感觉今年真的很快&#x1f602;。今天的主角是贪心。 贪心的思想非常不好解释&#xff0c;而且越使用权威的语言解释越难懂。而且做题的时候根据自己的理解可能直接做出来&#xff…

HashMap详解(扩容机制、底层结构、适用场景)

1、特点 底层是链表数组&#xff0c;JDK1.8开始&#xff0c;当链表长度超过8时&#xff0c;会将链表转换为红黑树。 储存的是key-value类型数据。 key值不允许重复&#xff0c;key重复会被覆盖&#xff0c;value允许重复。 数据储存无序&#xff08;不记录存入的顺序&#x…

html学习

1.框架标签 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title></head><body ><p align"center"><a href "http://www.baidu.com" target"aa">百度&l…

操作指南 | 如何使用API3请求链下数据

API3是一种去中心化解决方案&#xff0c;用于向智能合约平台提供传统且可扩展的API服务&#xff0c;使开发者能够访问如喂价和QRNG等链下资源。 API3由DAO管理&#xff0c;致力于在智能合约功能中轻松访问各种有用数据。 构建者在Moonbeam上可以访问不同的API3服务&#xff1…