正常思路是先复原二叉树,再宽度搜索打印,这里提供一个在复原过程中就记录的方案,比较小巧:
dic 存放每个深度的当前遍历到的最后一个值

dic={}
def ssolve(xianxu,zhongxu,n):
    index=zhongxu.index(xianxu[0])
    dic[n]=xianxu[0]
    if index>0:
        ssolve(xianxu[1:index+1], zhongxu[:index],n+1)
    if len(xianxu)-index>1:
        ssolve(xianxu[index+1:], zhongxu[index+1:],n+1)
class Solution:
    def solve(self , xianxu , zhongxu ):
        # write code here
        ssolve(xianxu, zhongxu, 0)
        return list(dic.values())