Sword_Offer 重建二叉树[7]

Sword_Offer 重建二叉树[7]

0x00 题目描述

题目:输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树.假设输入的前序遍历和中序遍历的结果都不含重复的数字.例如:输入前序遍历序列[1,2,4,7,3,5,6,8]和中序遍历序列[4,7,2,1,5,3,8,6].重建二叉树如下并输出它的头节点

0x01 解题思路

#!/usr/bin/env python3
# -*- coding:utf-8 -*-
# Author LQ6H

class TreeNode:
    def __init__(self,val):
        self.data=val
        self.left=None
        self.right=None

class Solution:
    def Construct(self,preorder,inorder):
        """
        :param preorder: List[int]
        :param inorder: List[int]
        :return: root(TreeNode)
        """
        if not preorder or not inorder:
            return None

        if len(preorder)==1:
            return TreeNode(preorder[0])

        root=TreeNode(preorder[0])
        idx=inorder.index(preorder[0])

        root.left=self.Construct(preorder[1:idx+1],inorder[:idx])
        root.right=self.Construct(preorder[idx+1:],preorder[idx+1:])

        return root
posted @ 2019-11-07 11:52  LQ6H  阅读(57)  评论(0编辑  收藏  举报