思路: 首先还原二叉树,然后根据层序遍历扫描
假设中序遍历为:QWERTYUIOP; 前序遍历为:WERQASSDF(瞎编的)
中序为:根左右,即Q必为根节点,对应前序遍历(index)Q之前的节点在左子树(WERQ,有4个节点),之后的在右子树(ASSDF,有5个节点). 再对应中序遍历:根节点Q之后的4个节点(WERT)应该为左子树节点,再之后的5个节点(YUIOP)应该为右子树节点。之后进行递归循环

class Solution:

def solve(self , xianxu , zhongxu ):
    class tree:  #建立二叉树
        def __init__(self,x):
            self.val=x
            self.left=None 
            self.right=None 

    def restore(xianxu,zhongxu):
        if len(xianxu)==0: return None 
        else: 
            root=xianxu[0]
            depth=zhongxu.index(root) 
            tmp=tree(root) 
            tmp.left=restore(xianxu[1:depth+1],zhongxu[:depth])
            tmp.right=restore(xianxu[depth+1:],zhongxu[depth+1:])
        return tmp 

    def levelorder(root,level): 
        if root==None: return 
        else: 
            sol[level-1].append(root.val)
            if len(sol)==level: 
                sol.append([])

            levelorder(root.left, level+1)
            levelorder(root.right,level+1)

    tmp,sol,answer=restore(xianxu,zhongxu),[[]],[]
    levelorder(tmp, 1)
    [answer.append(n[-1]) for n in sol[:-1]]
    return answer

    # write code here

```