[Leetcode]105. Construct Binary Tree from Preorder and Inorder Traversal@python

来源:互联网 发布:淘宝账户管理在哪里找 编辑:程序博客网 时间:2024/06/05 20:44

题目

Given preorder and inorder traversal of a tree, construct the binary tree.

Note:
You may assume that duplicates do not exist in the tree.

题目要求

给定对一个binary-tree的前序遍历和中序遍历。重建二叉树。

解题思路

前序遍历的第一个值为根节点的值,在中序遍历中找到这个值的位置,中序遍历中这个值左边的值为左子树的值,右边的值为右子树的值。

代码

# Definition for a binary tree node.# class TreeNode(object):#     def __init__(self, x):#         self.val = x#         self.left = None#         self.right = Noneclass Solution(object):    def buildTree(self, preorder, inorder):        """        :type preorder: List[int]        :type inorder: List[int]        :rtype: TreeNode        """        if len(preorder) == 0 or len(inorder) == 0:             return None        root = TreeNode(preorder[0])        in_pos = inorder.index(root.val)        preorder.pop(0)        root.left = self.buildTree(preorder,inorder[:in_pos])        root.right = self.buildTree(preorder,inorder[in_pos + 1:])        return root
0 0