105. Construct Binary Tree from Preorder and Inorder Traversal——tree
题目分析:根据前序和中序遍历结果,生成二叉树,关键是找到中间的节点。
from collections import deque class Solution: def buildTree(self, preorder, inorder): """ :type preorder: List[int] :type inorder: List[int] :rtype: TreeNode """ def helper(preorder, inorder): if not inorder: return None # pick up the first element as a root root_val = preorder.popleft() # 取出最中间的元素 root = TreeNode(root_val) # root splits inorder list # into left and right subtrees index = inorder.index(root_val) # recursion root.left = helper(preorder, inorder[:index]) root.right = helper(preorder, inorder[index + 1:]) return root return helper(deque(preorder), inorder)