前序、中序:root节点在前、中遍历
树的结构一般用递归:重建左右子树
1.根据前序遍历获得根节点
2.根据中序遍历获取左右子树节点范围
# -*- coding:utf-8 -*- # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution: # 返回构造的TreeNode根节点 def reConstructBinaryTree(self, pre, tin): # write code here if not pre or not tin: return None head = TreeNode(pre[0]) head_idx = tin.index(head.val) if head_idx is not None: head.left = self.reConstructBinaryTree(pre[1:1+head_idx], tin[:head_idx]) if head_idx is not len(tin)-1: head.right = self.reConstructBinaryTree(pre[head_idx+1:], tin[head_idx:]) return head