第十八天 Merge Two Binary Trees
2018-09-07 本文已影响2人
业余马拉松选手
哈哈,第十八天了,又是二叉树,还是继续递归
https://leetcode-cn.com/problems/merge-two-binary-trees/description/
这道题,其实有个隐藏的“条件”是,新得到的树可以是在之前的树上进行处理的。
那么当同时遍历的时候,有任意一个节点不存在的时候,就返回另外一个,而两个都存在的时候,那么就需要把两个的值相加,接着就是依次递归完成这个过程即可。
这里有个地方需要“绕”出来,就是这里是以t1这棵树为“返回”结果的,那么就在递归的时候,将t1的左右孩子依次递归调用即可,当然如果你用t2其实也是完全没以影响的
class Solution:
def mergeTrees(self, t1, t2):
"""
:type t1: TreeNode
:type t2: TreeNode
:rtype: TreeNode
"""
if t1 == None:
return t2
if t2 == None:
return t1
t1.val += t2.val
t1.left = self.mergeTrees(t1.left,t2.left)
t1.right = self.mergeTrees(t1.right,t2.right)
return t1
当然,只要是用递归的话,几乎就一定可以用栈来解决这个问题的。
最近状态确实不太好,就先完成为主吧
已经快3周了,需要总结一下了