第十八天 Merge Two Binary Trees

哈哈,第十八天了,又是二叉树,还是继续递归

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周了,需要总结一下了

你可能感兴趣的:(第十八天 Merge Two Binary Trees)