PTA L2-011 玩转二叉树(Python3)

PTA L2-011 玩转二叉树(Python3)_第1张图片

class TreeNode:
    def __init__(self, val=0, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right
def buildTree(qx,zx):
    if not qx or not zx:
        return None
    root_val = qx[0]
    root  = TreeNode(root_val)
    zx_index = zx.index(root_val)
    root.left = buildTree(qx[1:zx_index+1],zx[:zx_index])
    root.right = buildTree(qx[zx_index+1:],zx[zx_index+1:])
    return root
def mirror(root):
    if not root:
        return None
    root.left,root.right = root.right,root.left
    mirror(root.left)
    mirror(root.right)
    return root
def cengxu(root):
    if not root:
        return []
    result = []
    queue = [root]
    while queue:
        node = queue.pop(0)
        result.append(node.val)
        if node.left:
            queue.append(node.left)
        if node.right:
            queue.append(node.right)
    return result


n = int(input())
zx = list(map(int,input().split()))
qx = list(map(int,input().split()))
root = buildTree(qx,zx)
mirrortree = mirror(root)
result = cengxu(mirrortree)
print(' '.join(map(str,result)))

PTA L2-011 玩转二叉树(Python3)_第2张图片 

 

你可能感兴趣的:(python)