Side Views, Two Trees

Two Trees

872. Leaf-Similar Trees (Easy)

def leafSimilar(self, root1: Optional[TreeNode], root2: Optional[TreeNode]) -> bool:
    def recursion(node):
        if not node:
            return
        if not node.left and not node.right:
            yield node.val
        yield from recursion(node.left)
        yield from recursion(node.right)

    return list(recursion(root1)) == list(recursion(root2))

617. Merge Two Binary Trees (Easy)

def mergeTrees(
    self, root1: Optional[TreeNode], root2: Optional[TreeNode]
) -> Optional[TreeNode]:
    def recursion(a, b):
        if a and b:
            node = TreeNode(a.val + b.val)
            node.left = recursion(a.left, b.left)
            node.right = recursion(a.right, b.right)
        elif a:
            node = TreeNode(a.val)
            node.left = recursion(a.left, None)
            node.right = recursion(a.right, None)
        elif b:
            node = TreeNode(b.val)
            node.left = recursion(None, b.left)
            node.right = recursion(None, b.right)
        else:
            return None
        return node

    return recursion(root1, root2)