友情支持
如果您觉得这个笔记对您有所帮助,看在D瓜哥码这么多字的辛苦上,请友情支持一下,D瓜哥感激不尽,😜
|
|
有些打赏的朋友希望可以加个好友,欢迎关注D 瓜哥的微信公众号,这样就可以通过公众号的回复直接给我发信息。

公众号的微信号是: jikerizhi。因为众所周知的原因,有时图片加载不出来。 如果图片加载不出来可以直接通过搜索微信号来查找我的公众号。 |
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 <= 105 -
1 <= depth <= the depth of tree + 1
思路分析
深度优选遍历或广度优先遍历。
-
一刷
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
/**
* @author D瓜哥 · https://www.diguage.com
* @since 2026-04-07 20:24:16
*/
public TreeNode addOneRow(TreeNode root, int val, int depth) {
if (depth == 1) {
TreeNode result = new TreeNode(val);
result.left = root;
return result;
}
dfs(root, val, depth - 1);
return root;
}
private void dfs(TreeNode root, int val, int depth) {
if (root == null) {
return;
}
if (depth == 1) {
TreeNode left = new TreeNode(val);
left.left = root.left;
root.left = left;
TreeNode right = new TreeNode(val);
right.right = root.right;
root.right = right;
return;
}
dfs(root.left, val, depth - 1);
dfs(root.right, val, depth - 1);
}

