Пример #1
0
                return None, None
            if node.left:
                node.left.right, node.left.left = dfs(node.left)
            if node.right:
                node.right.right, node.right.left = dfs(node.right)
            return node.left, node.right

        if not root:
            return
        root.right, root.left = dfs(root)
        return root


if __name__ == '__main__':
    root = TreeNode(4)
    left = TreeNode(2)
    right = TreeNode(7)
    root.left = left
    root.right = right
    leftleft = TreeNode(1)
    leftright = TreeNode(3)
    left.left = leftleft
    left.right = leftright
    rightleft = TreeNode(6)
    rightright = TreeNode(9)
    right.left = rightleft
    right.right = rightright
    midOrder(root)
    root = Solution().invertTree(root)
    midOrder(root)
    midOrder(Solution().invertTree(None))
Пример #2
0
        return dfs(0, len(inorder) - 1, 0, len(postorder) - 1)


class Solution:
    def buildTree(self, inorder, postorder):
        """
        :type inorder: List[int]
        :type postorder: List[int]
        :rtype: TreeNode
        """
        def build(mark):
            if inorder and inorder[-1] != mark:
                root = TreeNode(postorder.pop())
                root.right = build(root.val)
                inorder.pop()
                root.left = build(mark)
                return root
            return None

        return build(None)


if __name__ == '__main__':
    # preorder = [3, 9, 20, 15, 7]
    preorder = [3, 2, 1, 4]
    # inorder = [9, 3, 15, 20, 7]
    inorder = [1, 2, 3, 4]
    root = Solution().buildTree(preorder, inorder)
    from common.tree import midOrder
    midOrder(root)
Пример #3
0
        if not t2:
            return t1

        t1.val = t1.val + t2.val
        t1.left = self.mergeTrees(t1.left, t2.left)
        t1.right = self.mergeTrees(t1.right, t2.right)
        return t1


if __name__ == '__main__':
    t1root = TreeNode(1)
    t1left = TreeNode(3)
    t1right = TreeNode(2)
    t1root.left = t1left
    t1root.right = t1right
    t1leftleft = TreeNode(5)
    t1left.left = t1leftleft

    t2root = TreeNode(2)
    t2left = TreeNode(1)
    t2right = TreeNode(3)
    t2root.left = t2left
    t2root.right = t2right
    t2leftright = TreeNode(4)
    t2rightright = TreeNode(7)
    t2left.right = t2leftright
    t2right.right = t2rightright

    t = Solution().mergeTrees(t1root, t2root)
    midOrder(t)