前序和中序遍历构建二叉树

已知二叉树的前序和中序构建二叉树
代码如下:

class Node:
    def __init__(self, data, left, right):
        self.data=data
        self.left=left
        self.right=right
def construct_tree(preorder,midorder):
    if len(preorder)==0:
        return None
    root_data=preorder[0]
    i=midorder.index(root_data)
    left=construct_tree(preorder[1:i+1],midorder[:i])
    right=construct_tree(preorder[i+1:],midorder[i+1:])
    return Node(root_data,left,right)
if __name__=='__main__':
    pre_order = [1, 2, 4, 7, 3, 5, 6, 8]
    mid_order = [4, 7, 2, 1, 5, 3, 8, 6]
    root=construct_tree(pre_order,mid_order)
    print root