Update 0617.合并二叉树.md

修改逻辑与题解相同.
This commit is contained in:
Kelvin
2021-07-31 23:04:46 -04:00
parent 6bbfebd822
commit 932d27754c

View File

@ -312,6 +312,8 @@ class Solution {
``` ```
Python Python
**递归法 - 前序遍历**
```python ```python
# Definition for a binary tree node. # Definition for a binary tree node.
# class TreeNode: # class TreeNode:
@ -319,16 +321,25 @@ Python
# self.val = val # self.val = val
# self.left = left # self.left = left
# self.right = right # self.right = right
# 递归法*前序遍历
class Solution: class Solution:
def mergeTrees(self, root1: TreeNode, root2: TreeNode) -> TreeNode: def mergeTrees(self, root1: TreeNode, root2: TreeNode) -> TreeNode:
if not root1: return root2 // 如果t1为空合并之后就应该是t2 # 递归终止条件:
if not root2: return root1 // 如果t2为空合并之后就应该是t1 # 但凡有一个节点为空, 就立刻返回另外一个. 如果另外一个也为None就直接返回None.
root1.val = root1.val + root2.val //中 if not root1:
root1.left = self.mergeTrees(root1.left , root2.left) //左 return root2
root1.right = self.mergeTrees(root1.right , root2.right) //右 if not root2:
return root1 //root1修改了结构和数值 return root1
# 上面的递归终止条件保证了代码执行到这里root1, root2都非空.
root1.val += root2.val # 中
root1.left = self.mergeTrees(root1.left, root2.left) #左
root1.right = self.mergeTrees(root1.right, root2.right) # 右
return root1 # ⚠️ 注意: 本题我们重复使用了题目给出的节点而不是创建新节点. 节省时间, 空间.
```
**迭代法**
```python
# 迭代法-覆盖原来的树 # 迭代法-覆盖原来的树
class Solution: class Solution:
def mergeTrees(self, root1: TreeNode, root2: TreeNode) -> TreeNode: def mergeTrees(self, root1: TreeNode, root2: TreeNode) -> TreeNode: