当前位置:网站首页>【LeetCode】623. Add a row to the binary tree
【LeetCode】623. Add a row to the binary tree
2022-08-05 08:50: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
思路
- 若为根节点,The new node is directly used as the root node,The root node is returned as the left subtree of the new node
- if not the root node,则遍历到 d e p t h − 1 depth-1 depth−1层,Then insert the new node
代码
# 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时,直接插入新节点,Otherwise recurse its left and right subtrees,直到符合条件
代码
# 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)
边栏推荐
- Pagoda measurement - building small and medium-sized homestay hotel management source code
- [Structure internal power practice] Structure memory alignment (1)
- Embedded Systems: Basic Timers
- ps怎么替换颜色,自学ps软件photoshop2022,ps一张图片的一种颜色全部替换成另外一种颜色
- DTcloud 装饰器
- Thinking after writing a code with a very high CPU usage
- ts/js function pass parameter with function writing
- Chapter 12 贝叶斯网络
- JS语法使用
- Fiddler工具讲解
猜你喜欢
随机推荐
Moonbeam团队发布针对整数截断漏洞的紧急安全修复
写出了一个CPU占用极高的代码后引发的思考
EA谈单机游戏:仍是产品组合中极其重要的部分
Walk 100 trick society
Insights in programming
16 kinds of fragrant rice recipes
工程制图知识点
512色色谱图
Why is pnpm hitting npm and yarn dimensionality reduction?
这样写有问题吗?怎么在sql-client 是可以做到数据的同步的
基于多块信息提取和马氏距离的k近邻故障监测
Fiddler tool explanation
嵌入式实操----基于RT1170 移植memtester做SDRAM测试(二十五)
ps怎么替换颜色,自学ps软件photoshop2022,ps一张图片的一种颜色全部替换成另外一种颜色
十一道家常小菜详细攻略[图文并茂]
让程序员崩溃的N个瞬间(非程序员误入)
k-nearest neighbor fault monitoring based on multi-block information extraction and Mahalanobis distance
What is a good movie to watch on Qixi Festival?Crawl movie ratings and save to csv file
RedisTemplate: error template not initialized; call afterPropertiesSet() before using it
Rotation of the displayed value on the button








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