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

Java 在二叉树中增加一行

623. 在二叉树中增加一行

中等

给定一个二叉树的根 root 和两个整数 valdepth ,在给定的深度 depth 处添加一个值为 val 的节点行。

注意,根节点 root 位于深度 1

加法规则如下:

  • 给定整数 depth,对于深度为 depth - 1 的每个非空树节点 cur ,创建两个值为 val 的树节点作为 cur 的左子树根和右子树根。

  • cur 原来的左子树应该是新的左子树根的左子树。

  • cur 原来的右子树应该是新的右子树根的右子树。

  • 如果 depth == 1 意味着 depth - 1 根本没有深度,那么创建一个树节点,值 val 作为整个原始树的新根,而原始树就是新根的左子树。

示例 1:

输入: root = [4,2,6,3,1,5], val = 1, depth = 2

输出: [4,1,1,2,null,null,6,3,1,5]

示例 2:

输入: root = [4,2,null,3,1], val = 1, depth = 3

输出: [4,2,null,1,1,3,null,null,1]

题解(层序遍历+队列 求解)

  1. 因为在深度为2是添加一行就是在第二行与第一行之间添加一行节点,所以初始化一个变量为 1,记录要添加一行位置与终止循环条件

  1. 当添加的一行的左右节点为空时,且深度正好为要添加一行深度,则让该节点的左右节点都为要添加的节点

  1. 当要添加的节点左或右不为空,借助中间节点拼接树

  1. 当深度为1时让要添加的节点左子树为根节点即可。

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {public TreeNode addOneRow(TreeNode root, int val, int depth) {Queue<TreeNode> queue = new LinkedList<>();if(depth == 1){TreeNode temp = new TreeNode(val);temp.left = root;System.out.println(temp.val+" "+temp.left.val);return temp;}// TreeNode temp = new TreeNode(val);TreeNode dummy = root;queue.add(dummy);int count = 1;while (queue.size() > 0){int n = queue.size();for (int i = 0; i < n; i++) {TreeNode remove = queue.remove();if(remove.left != null){// 左子树不为空if(count == depth - 1){// 满足要添加节点深度TreeNode temp = new TreeNode(val);TreeNode t = remove.left;// 中间节点拼接remove.left = temp;temp.left = t;}else {// 不满足节点深度继续添加下一层节点queue.add(remove.left);}}else if(count == depth - 1){// 左子树为空且满足添加节点深度,直接让添加节点为该节点左子树TreeNode temp = new TreeNode(val);remove.left = temp;}if(remove.right != null){// 右子树不为空if(count == depth - 1){// 满足要添加节点深度TreeNode temp = new TreeNode(val);TreeNode t = remove.right;// 中间节点拼接remove.right = temp;temp.right = t;}else {// 不满足节点深度继续添加下一层节点queue.add(remove.right);}}else if(count == depth - 1){// 左子树为空且满足添加节点深度,直接让添加节点为该节点左子树TreeNode temp = new TreeNode(val);remove.right = temp;}}// if(count == depth){//     break;//}count++;}return dummy;}
}

相关文章:

Java 在二叉树中增加一行

623. 在二叉树中增加一行中等给定一个二叉树的根 root 和两个整数 val 和 depth &#xff0c;在给定的深度 depth 处添加一个值为 val 的节点行。注意&#xff0c;根节点 root 位于深度 1 。加法规则如下:给定整数 depth&#xff0c;对于深度为 depth - 1 的每个非空树节点 cur…...

kubernetes(k8s) 知识总结(第2期)

1. “控制器”思想 kube-controller-manager 是一系列控制器的集合&#xff0c;这些控制器被放在 Kubernetes 项目的 pkg/controller 目录&#xff0c;这些控制器都以独有的方式负责某种编排功能。它们都遵循一个通用的编排模式——控制循环。 以 Deployment 为例介绍它对控…...

windows-Mysql的主从数据库同步设置

复制原有的mysql修改my.ini配置文件 修改端口号修改从数据的地址和从数据库的数据存放地址安装从数据库进入从数据库的bin目录&#xff0c;打开命令窗口输入命令&#xff1a;mysqld.exe install mysql-back --defaults-file "C:\ProgramData\MySQL\MySQL Server 5.7-back\…...

Docker逃逸

文章目录原理环境搭建Docker 环境判断Docker 容器逃逸特权模式逃逸如何判断是否为特权模式逃逸docker.sock挂载逃逸逃逸Remote API未授权访问未授权访问逃逸容器服务缺陷逃逸影响版本环境搭建逃逸脏牛漏洞逃逸参考原理 docker其实就是一个linux下的进程&#xff0c;它通过Name…...

k8s项目部署

k8s命令k8s项目部署部署流程实现导出相应的yaml文件 kubectl create deployment 名字--image镜像-o yaml --dry-runclient > 文件名 例&#xff1a; kubectl create deployment nginx --imagenginx -o yaml --dry-runclient > m1.yaml导出已经部署后的yaml文件 kubectl g…...

Modbus通信协议学习笔记

Modbus主从设备 主控设备&#xff08;Modbus Master&#xff09;&#xff1a;工控机、PLC、触摸屏等等 从设备&#xff08;Modbus Slave&#xff09;&#xff1a;PLC、Modbus采集模块、带485通讯的传感器、仪器仪表等等 Modbus物理接口&#xff1a;串口&#xff08;RS232、RS4…...

ubuntu重启、关机命令

// // // //之前用linux系统&#xff0c; 一键解决也是可以的&#xff0c;反正我每次用命令&#xff08;泪目…&#xff09;&#xff0c;中间崩了好几次&#xff0c;换回win&#xff0c;此篇也做记录 // // // 重启命令 以下所有命令在root根目录下输入&#xff08;普通用户&…...

Xshell 7 连接云服务器的步骤和出现的错误

一、工具准备云服务器Xshell 7二、使用 Xshell 7 连接数据库三、新建会话属性后&#xff0c;没有自动弹出 SSH 用户名要求输入四、SSH 用户身份验证不能输入 Password五、Xshell 连接 centos 7 服务器 报错提示 “ssh服务拒绝了密码&#xff0c;请再试一次“&#xff0c;但是密…...

Python多进程同步——文件锁

多个进程共享同一份资源&#xff08;共享内存、文件等&#xff09;时&#xff0c;会涉及到资源竞争问题。为了解决这种问题&#xff0c;一般采取的措施是进程在访问资源前加锁保护&#xff0c;避免多个进程同时读写。本文介绍的Python文件锁可以用来解决多进程的同步问题。 目录…...

实现 element-plus 表格多选时按 shift 进行连选的功能

前言 element-plus表格提供了多选功能&#xff0c;可单击勾选一条数据&#xff0c;可全选。 现在有个很合理的需求&#xff0c;希望实现类似于文件系统中shift连续选择功能&#xff0c;并且在表格排序后&#xff0c;依照排序后的顺序连选。 一、el-table 多选表格基本使用 1、…...

华为OD机试真题JAVA实现【考古学家】真题+解题思路+代码(20222023)

🔥系列专栏 华为OD机试(JAVA)真题目录汇总华为OD机试(Python)真题目录汇总华为OD机试(C++)真题目录汇总华为OD机试(JavaScript)真题目录汇总文章目录 🔥系列专栏题目输入输出示例一输入输出说明示例二输入输出说明...

Spring3之基于Aspect实现AOP

简介 使用 Aspect 搭配 Spring 可轻松实现 AOP&#xff1b;本章将通过一个完整示例演示如何实现这一功能 实现步骤 修改 beans.xml 配置文件的 schema 部分&#xff1b;可以在 spring-framework-reference.html 文件通过搜索关键字 “/aop” 找到配置 schema&#xff0c;然后…...

buctoj-寒假集训进阶训练赛(二十二)

问题 A: Stones 题目描述 由于自行车状态错误&#xff0c;森普尔开始每天早上从东到西走&#xff0c;每天晚上走回去。走路可能会有点累&#xff0c;所以森普这次总是玩一些游戏。 路上有很多石头&#xff0c;当他遇到一块石头时&#xff0c;如果是他遇到的奇数石头&#xff0…...

华为OD机试真题JAVA实现【静态扫描最优成本】真题+解题思路+代码(20222023)

🔥系列专栏 华为OD机试(JAVA)真题目录汇总华为OD机试(Python)真题目录汇总华为OD机试(C++)真题目录汇总华为OD机试(JavaScript)真题目录汇总文章目录 🔥系列专栏题目输入输出描述示例一输入输出说明示例二输入输出说明...

汽车装配工厂立库物料运送线PLC无线应用

一、应用背景此次项目地在比亚迪的西安工厂&#xff0c;需要实现PLC无线通讯的地方是汽车厂的立体仓库物料运输线。生产物流担负运输、存储、装卸物料等任务。汽车制造业是典型的多工种、多工艺、多物料的大规模生产过程&#xff0c;因此原材料与零部件必需及时准确送至工位&am…...

Python雪花代码

前言 用python画个雪花玩玩&#xff0c;源码在文末公众号哈。 雪花类 class Snow(): #雪花类 def __init__(self): self.r 6 #雪花的半径 self.x ra.randint(-1000,1000) #雪花的横坐标 self.y ra.randint(-500,5…...

Numpy基础与实例——人工智能基础

文章目录一、Numpy概述1. 优势2. numpy历史3. Numpy的核心&#xff1a;多维数组4. 内存中的ndarray对象4.1 元数据&#xff08;metadata&#xff09;4.2 实际数据二、numpy基础1. ndarray数组2. arange、zeros、ones、zeros_like3. ndarray对象属性的基本操作3.1 修改数组维度3…...

MQTT的工作原理

介绍MQTT协议的消息模型,消息传输过程,消息发布和订阅。 一、介绍MQTT协议的消息模型 MQTT协议的消息模型被称为“主题”模型。在这种模型中,服务器接收到的消息将通过主题进行分类。客户端可以通过订阅一个或多个主题来接收所需的消息。 1.1 消息主题 1.2 消息内容 1.…...

iOS开发:UINavigationController自定义返回按钮,系统导航支持侧滑返回

当你使用系统导航想拦截用户返回事件时,无法拦截侧滑返回 当你自定义导航或者隐藏导航后,iOS系统导航的侧滑返回就失效了,那么用户体验将大打折扣 网上大部分自定义导航的解决方案是:给页面添加全局的轻扫手势,那么又区别于原生系统,改变了用户的操作习惯 在开发过程中,…...

【Kafka进阶】-- unclean.leader.election.enable参数的内涵

一、背景近期&#xff0c;我们的kafka 消息队列集群(1.x版本)经过了一次事故。某节点意外宕机&#xff0c;导致 log 文件损坏&#xff0c;重启 kafka 失败&#xff0c;最后导致某个 topic 的分区不可用&#xff0c;本文对此做了简单的分析、解决和复现参考&#xff0c;以此为记…...

【Matlab】MATLAB教程:Simulink与MATLAB交互(MATLAB函数模块案例+混合编程仿真)

MATLAB教程:Simulink与MATLAB交互(MATLAB函数模块案例+混合编程仿真) 本教程适配MATLAB R2020a及以上版本,聚焦Simulink与MATLAB交互核心技能,以MATLAB函数模块为核心案例,详解混合编程仿真的全流程,无需深厚编程基础,纯实操导向、案例可直接复刻,适配高校课程设计、…...

深度解析:如何高效实现Android应用级定位模拟的完整方案

深度解析&#xff1a;如何高效实现Android应用级定位模拟的完整方案 【免费下载链接】FakeLocation Xposed module to mock locations per app. 项目地址: https://gitcode.com/gh_mirrors/fak/FakeLocation 在移动应用开发和测试领域&#xff0c;精准控制定位信息是确保…...

Python统一调用多AI模型:python-tgpt库实战指南

1. 项目概述&#xff1a;一个让Python与AI对话更简单的工具 如果你最近在尝试用Python调用各种大语言模型&#xff08;LLM&#xff09;的API&#xff0c;比如OpenAI的GPT、Google的Gemini&#xff0c;或者开源的Llama、Mistral&#xff0c;那你大概率经历过这样的场景&#xf…...

PyTorch深度学习资源大全:如何快速找到最佳教程和项目库的终极指南

PyTorch深度学习资源大全&#xff1a;如何快速找到最佳教程和项目库的终极指南 【免费下载链接】the-incredible-pytorch The Incredible PyTorch: a curated list of tutorials, papers, projects, communities and more relating to PyTorch. 项目地址: https://gitcode.c…...

高性能零依赖Vue3跑马灯组件:企业级动态内容展示解决方案

高性能零依赖Vue3跑马灯组件&#xff1a;企业级动态内容展示解决方案 【免费下载链接】vue3-marquee A simple marquee component with ZERO dependencies for Vue 3. 项目地址: https://gitcode.com/gh_mirrors/vu/vue3-marquee Vue3-Marquee是一个专为Vue 3设计的零依…...

Python操控Photoshop的终极指南:如何用代码实现高效图像处理自动化

Python操控Photoshop的终极指南&#xff1a;如何用代码实现高效图像处理自动化 【免费下载链接】photoshop-python-api Python API for Photoshop. 项目地址: https://gitcode.com/gh_mirrors/ph/photoshop-python-api 如果你还在手动重复Photoshop操作&#xff0c;那么…...

疫情技术浪潮:消费电子与远程协作的变革与未来

1. 疫情技术浪潮&#xff1a;一场被迫的“未来”实验两年前&#xff0c;没人能想象一场全球性的公共卫生危机会以如此剧烈的方式&#xff0c;重塑我们与技术、工作乃至日常生活的关系。我们被抛入了一场规模空前的社会实验&#xff0c;被迫在短时间内&#xff0c;将许多原本可能…...

腾讯会议AI助手使用教程(附避坑指南):新手也能快速上手,高效搞定会议纪要

【前言】最近腾讯会议AI助手彻底火了&#xff0c;身边不少程序员、职场人都在使用&#xff0c;都说“再也不用熬夜整理会议纪要了”。但很多新手第一次使用&#xff0c;会遇到“不知道怎么开启”“转写准确率低”“不会导出总结”等问题。今天就给大家带来一份详细的腾讯会议AI…...

Marchand Balun设计原理与IE3D电磁仿真实践

1. Marchand Balun设计基础与电磁仿真原理在射频和微波电路设计中&#xff0c;平衡-不平衡转换器&#xff08;Balun&#xff09;是实现单端信号与差分信号相互转换的关键无源器件。作为从业15年的射频工程师&#xff0c;我经常需要在各类高频电路中使用Balun结构&#xff0c;而…...

从Solyndra事件看美国太阳能产业转型与能源创新体系构建

1. 从Solyndra事件看美国太阳能产业的十字路口2011年秋天&#xff0c;加州弗里蒙特市&#xff0c;一家名为Solyndra的太阳能公司大门前&#xff0c;联邦官员正将一箱箱文件搬上卡车&#xff0c;而当地几乎所有的电视台摄像机都记录下了这一幕。这家曾获得美国能源部5.35亿美元贷…...