Skip to content

Commit 932d277

Browse files
committed
Update 0617.合并二叉树.md
修改逻辑与题解相同.
1 parent 6bbfebd commit 932d277

File tree

1 file changed

+18
-7
lines changed

1 file changed

+18
-7
lines changed

problems/0617.合并二叉树.md

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -312,23 +312,34 @@ class Solution {
312312
```
313313

314314
Python:
315+
316+
**递归法 - 前序遍历**
315317
```python
316318
# Definition for a binary tree node.
317319
# class TreeNode:
318320
# def __init__(self, val=0, left=None, right=None):
319321
# self.val = val
320322
# self.left = left
321323
# self.right = right
322-
# 递归法*前序遍历
323324
class Solution:
324325
def mergeTrees(self, root1: TreeNode, root2: TreeNode) -> TreeNode:
325-
if not root1: return root2 // 如果t1为空,合并之后就应该是t2
326-
if not root2: return root1 // 如果t2为空,合并之后就应该是t1
327-
root1.val = root1.val + root2.val //
328-
root1.left = self.mergeTrees(root1.left , root2.left) //
329-
root1.right = self.mergeTrees(root1.right , root2.right) //
330-
return root1 //root1修改了结构和数值
326+
# 递归终止条件:
327+
# 但凡有一个节点为空, 就立刻返回另外一个. 如果另外一个也为None就直接返回None.
328+
if not root1:
329+
return root2
330+
if not root2:
331+
return root1
332+
# 上面的递归终止条件保证了代码执行到这里root1, root2都非空.
333+
root1.val += root2.val #
334+
root1.left = self.mergeTrees(root1.left, root2.left) #
335+
root1.right = self.mergeTrees(root1.right, root2.right) #
336+
337+
return root1 # ⚠️ 注意: 本题我们重复使用了题目给出的节点而不是创建新节点. 节省时间, 空间.
331338

339+
```
340+
341+
**迭代法**
342+
```python
332343
# 迭代法-覆盖原来的树
333344
class Solution:
334345
def mergeTrees(self, root1: TreeNode, root2: TreeNode) -> TreeNode:

0 commit comments

Comments
 (0)