题目:已知一颗二叉树所有的节点值都不同,给定这颗树正确的先序和中序数组,不要重建整颗树,而是通过这两个数组直接生成正确的后续数组
def getPosArray(pre,mid):
if pre == None or mid == None:
return None
pos = [None for i in range(len(mid))]
map_ = {}
for i in range(len(mid)):
map_[mid[i]] = i
setPos(pre,0,len(pre)-1,mid,0,len(pre)-1,pos,len(pos)-1,map_)
def setPos(pre,p1,pn,mid,m1,mn,pos,p,map_):
if p1 > pn:
return None
pos[p] = pre[p1]
p -=1
i = map_[pre[p1]]
p = setPos(pre,pn - mn + i + i, pn , mid, i+1, mn,pos,p,map_)
return setPos(pre,p1 + 1, p1 + i -m1, mid, m1,i-1, pos,p,map_)