LeetCode 617 – Python 3 (Week 5 – 02)

Solution 1

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution:
    def mergeTrees(self, t1: TreeNode, t2: TreeNode) -> TreeNode:
        if not t1: return t2
        if not t2: return t1
        
        ans = TreeNode(t1.val + t2.val)        
        ans.left = self.mergeTrees(t1.left, t2.left)
        ans.right = self.mergeTrees(t1.right, t2.right)
        
        return ans

Time complexity is O(n). Space complexity is O(m). n is the minimum number of nodes from the two given trees. m is the depth.

Solution 2

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution:
    def mergeTrees(self, t1: TreeNode, t2: TreeNode) -> TreeNode:
        if not t1: return t2
        if not t2: return t1
        
        stack = []
        stack.append((t1, t2))
        while stack:
            t = stack.pop()
            if t[1]: t[0].val += t[1].val
            else: continue
            
            if t[0].left is None: t[0].left = t[1].left
            else: stack.append((t[0].left, t[1].left))
            
            if t[0].right is None: t[0].right = t[1].right
            else: stack.append((t[0].right, t[1].right))
            
        return t1

Time complexity is O(n). Space complexity is O(n).

Leave a comment

Design a site like this with WordPress.com
Get started