当前位置:网站首页>【LeetCode】623. 在二叉树中增加一行
【LeetCode】623. 在二叉树中增加一行
2022-08-05 08:37:00 【pass night】
题目
给定一个二叉树的根 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
题解1
思路
- 若为根节点,则直接将新节点作为根节点,根节点作为新节点的左子树返回
- 若非根节点,则遍历到 d e p t h − 1 depth-1 depth−1层,然后将新节点插入
代码
# 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 addOneRow(self, root: Optional[TreeNode], val: int, depth: int) -> Optional[TreeNode]:
if depth == 1:
node = TreeNode(val)
node.left = root
root = node
return root
queue = collections.deque([root])
while queue and depth > 2:
depth -= 1
for _ in range(len(queue)):
cur = queue.popleft()
if cur.left: queue.append(cur.left)
if cur.right: queue.append(cur.right)
for _ in range(len(queue)):
cur = queue.popleft()
if cur.left:
node = TreeNode(val)
node.left = cur.left
cur.left = node
else:
cur.left = TreeNode(val)
if cur.right:
node = TreeNode(val)
node.right = cur.right
cur.right = node
else:
cur.right = TreeNode(val)
return root
复杂度
- 时间复杂度: O ( n ) O(n) O(n)
- 空间复杂度: O ( n ) O(n) O(n)
题解2
思路
- 当 d e p t h ∈ 1 , 2 depth \in {1,2} depth∈1,2时,直接插入新节点,否则递归其左右子树,直到符合条件
代码
# 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 addOneRow(self, root: Optional[TreeNode], val: int, depth: int) -> Optional[TreeNode]:
if not root: return None
if depth == 1:
return TreeNode(val,root,None)
if depth == 2:
root.left = TreeNode(val,root.left, None)
root.right = TreeNode(val, None, root.right)
else:
root.left = self.addOneRow(root.left, val, depth-1)
root.right = self.addOneRow(root.right, val, depth-1)
return root
复杂度
- 时间复杂度: O ( n ) O(n) O(n)
- 空间复杂度: O ( n ) O(n) O(n)
边栏推荐
- The difference between beautiful MM and ordinary MM
- Chapter 12 贝叶斯网络
- Version number naming convention
- “充钱”也难治快手的“亏亏亏”?
- [Untitled] Long-term recruitment of hardware engineers-Shenzhen Baoan
- P1103 书本整理
- RedisTemplate: 报错template not initialized; call afterPropertiesSet() before using it
- love is a sad song
- Pagoda measurement - building small and medium-sized homestay hotel management source code
- Green Apple Forum reopens
猜你喜欢

DPU — 功能特性 — 网络系统的硬件卸载

php向mysql写入数据失败

TensorFlow installation steps
![[Structural Internal Power Cultivation] Structural Realization Stages (2)](/img/eb/c80e12edbf4a411227be7e33096ed3.png)
[Structural Internal Power Cultivation] Structural Realization Stages (2)

ps怎么拼图,自学ps软件photoshop2022,PS制作拼图效果

Pagoda measurement - building small and medium-sized homestay hotel management source code

How to make pictures clear in ps, self-study ps software photoshop2022, simple and fast use ps to make photos clearer and more textured

How to replace colors in ps, self-study ps software photoshop2022, replace one color of a picture in ps with another color
![[Structure internal power practice] Structure memory alignment (1)](/img/31/4ddc16810da8238ac95a93d007e12e.png)
[Structure internal power practice] Structure memory alignment (1)

Redis实现分布式锁-原理-问题详解
随机推荐
【结构体内功修炼】枚举和联合的奥秘(三)
ps怎么把图片变清晰,自学ps软件photoshop2022,简单快速用ps让照片更清晰更有质感
EA谈单机游戏:仍是产品组合中极其重要的部分
基因数据平台
php向mysql写入数据失败
Luogu P1966: [NOIP2013 提高组] 火柴排队 [树状数组+逆序对]
SQL语句查询字段内重复内容,并按重复次数加序号
CROS和JSONP配置
TensorFlow安装步骤
egg框架
Jmeter永久设置中文界面
The difference between beautiful MM and ordinary MM
egg框架中解决跨域的三种方案
让程序员崩溃的N个瞬间(非程序员误入)
【无标题】长期招聘硬件工程师-深圳宝安
MySQL database error The server quit without updating PID file (/var/lib/mysql/localhost.localdomain.pid)
NC20164 :最大数MAXNUMBER [线段树]
SQL SERVER关于主从表触发器设计
程序设计中的感悟
真正爱你的女人是这样的