以不变应万变,搞清楚原理很重要。
class TreeNode:
def __init__(self, val="", left=None, right=None):
self.val = val
self.left = left
self.right = right
def solve(preorder, inorder):
if not preorder:
return None
left_size = inorder.index(preorder[0])
left = solve(preorder[1 : left_size + 1], inorder[0:left_size])
right = solve(preorder[left_size + 1 :], inorder[left_size + 1 :])
return TreeNode(preorder[0], left, right)
def dfs(node):
if not node:
return
dfs(node.left)
dfs(node.right)
print(node.val, end="")
while True:
try:
preorder = input()
inorder = input()
root = solve(preorder, inorder)
dfs(root)
print()
except:
break

京公网安备 11010502036488号