当前位置:网站首页>2022.08.05_每日一题
2022.08.05_每日一题
2022-08-09 18:00:00 【诺.い】
623. 在二叉树中增加一行
题目描述
给定一个二叉树的根 root 和两个整数 val 和 depth ,在给定的深度 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, 104]范围内 - 树的深度在
[1, 104]范围内 -100 <= Node.val <= 100-105 <= val <= 1051 <= depth <= the depth of tree + 1
coding
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 {
int val;
int depth;
public TreeNode addOneRow(TreeNode root, int val, int depth) {
this.val = val;
this.depth = depth;
if(depth == 1){
return new TreeNode(val, root, null);
}
dfs(root, 1);
return root;
}
public void dfs(TreeNode node, int curDepth){
if(curDepth == depth - 1){
if(node != null){
node.left = new TreeNode(val, node.left, null);
node.right = new TreeNode(val, null, node.right);
}
return;
}
if (node != null){
dfs(node.left, curDepth + 1);
dfs(node.right, curDepth + 1);
}
}
}
2.广度优先
/** * 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) {
if(depth == 1){
return new TreeNode(val, root, null);
}
List<TreeNode> temp1 = new ArrayList<>();
temp1.add(root);
for (int i = 1; i < depth - 1; i ++) {
List<TreeNode> temp2 = new ArrayList<>();
for(TreeNode node : temp1) {
if (node.left != null) {
temp2.add(node.left);
}
if (node.right != null) {
temp2.add(node.right);
}
}
temp1 = temp2;
}
for(TreeNode node : temp1) {
node.left = new TreeNode(val, node.left, null);
node.right = new TreeNode(val, null, node.right);
}
return root;
}
}
边栏推荐
- fastdfs-client使用
- Paper sharing: "FED BN" uses the LOCAL BATCH NORMALIZATION method to solve the Non-iid problem
- 英赛克工控安全项目入围《钢铁行业智能制造解决方案推荐目录》
- 什么是藏宝计划(TPC),2022的一匹插着翅膀的黑马!
- 没有 accept,建立 TCP 连接,可以吗?
- 电商项目架构图
- 论文分享:「FED BN」使用LOCAL BATCH NORMALIZATION方法解决Non-iid问题
- 毕昇编译器优化:Lazy Code Motion
- Ng DevUI 周下载量突破1000啦!
- Detailed explanation of VIT transformer
猜你喜欢

软件设计的七大原则

李乐园:iMetaLab Suite宏蛋白质组学数据分析与可视化(视频+PPT)

kakka rebalance解决方案

IMX6ULL—Assembly LED Lights
![[免费专栏] Android安全之动态代码注入技术(利用JDB调试APK)](/img/86/3123f87d9b88d4fe424b2cf134eb62.png)
[免费专栏] Android安全之动态代码注入技术(利用JDB调试APK)

ceph集群部署

What is the Treasure Project (TPC), a dark horse with wings in 2022!

IMX6ULL—汇编LED灯
![[免费专栏] Android安全之静态方式逆向APK应用浅析【手动注入smali+】+【IDA Pro静态分析so文件】+【IDA Pro基础使用讲解】](/img/05/61cf11d03cb3bd785bba1b12bc946e.png)
[免费专栏] Android安全之静态方式逆向APK应用浅析【手动注入smali+】+【IDA Pro静态分析so文件】+【IDA Pro基础使用讲解】

什么是藏宝计划(TPC),2022的一匹插着翅膀的黑马!
随机推荐
d中简单禁止垃集
C程序设计-第四版
AWS CodePipeLine 跨账号部署ECS
Bi Sheng Compiler Optimization: Lazy Code Motion
商业智能BI行业分析思维框架:铅酸蓄电池行业(一)
没有 accept,建立 TCP 连接,可以吗?
你应该试着独自做个游戏
[免费专栏] Android安全之动态代码注入技术(利用JDB调试APK)
MFC教程
PHP基础笔记-NO.4
JMeter压测时如何在达到给定错误数量后停止测试
毕昇编译器优化:Lazy Code Motion
放下手机吧:实验表明花20分钟思考和上网冲浪同样快乐
5.4 总结
IDEA工具常用配置
再次开始清理电子海图开发群中长期潜水人士
对数学直观、感性的认知是理解数学、喜爱数学的必经之路,这本书做到了!
每周给我10分钟,我给你一个Flink SQL 菜谱——甜点:数据过滤
.NET现代应用的产品设计 - DDD实践
[免费专栏] Android安全之Android奇淫run-as命令