题解 | #重建二叉树#
重建二叉树
http://www.nowcoder.com/practice/8a19cbe657394eeaac2f6ea9b0f6fcf6
# -*- 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
return self.ReConstructBinaryTree(pre, tin)
def ReConstructBinaryTree(self, pre, tin):
if len(pre) == 0:
return None
if len(pre) == 1:
ret = TreeNode(pre[0])
return ret
ret = TreeNode(pre[0])
idx = tin.index(pre[0])
ret.left = self.ReConstructBinaryTree(pre[1:idx+1], tin[0:idx])
ret.right = self.ReConstructBinaryTree(pre[idx+1:], tin[idx+1:])
return ret