class TreeNode:
def __init__(self, val):
self.val = val
self.left = None
self.right = None
def buildTree(inorder, preorder):
if not inorder or not preorder:
return None
root_val = preorder[0]
root = TreeNode(root_val)
root_index = inorder.index(root_val)
root.left = buildTree(inorder[:root_index], preorder[1:root_index+1])
root.right = buildTree(inorder[root_index+1:], preorder[root_index+1:])
return root
def mirrorTree(root):
if not root:
return None
root.left, root.right = root.right, root.left
mirrorTree(root.left)
mirrorTree(root.right)
def levelOrder(root):
if not root:
return []
queue = [root]
result = []
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())
inorder = list(map(int, input().split()))
preorder = list(map(int, input().split()))
root = buildTree(inorder, preorder)
mirrorTree(root)
result = levelOrder(root)
print(' '.join(map(str, result)))
玩转二叉树2
最新推荐文章于 2024-09-28 09:18:19 发布