题目
由后序序列和中序序列得到层序序列
思路
1.由由后序序列和中序序列建树
2.得到树的层序序列
Python代码
n = int(input())
post = list(map(int,input().split()))
inorder = list(map(int,input().split()))
class node:
def __init__(self,val,left=None,right=None):
self.val=val
self.left=left
self.right=right
class Tree:
def __init__(self,root):
self.root=root
def levelorder(self):
ret=[]
t=self.root
if t==None:return ret
queue = [t]
while queue != []:
l=len(queue)
for i in range(l):
p=queue.pop(0)
ret.append(p.val)
if p.left != None:queue.append(p.left)
if p.right != None:queue.append(p.right)
return ret
def Create(post,ins):
root = _Create(post,0,ins,0,n)
bt=Tree(root)
return bt
def _Create(post,i,ins,j,n):
if n<=0:return None
val=post[i+n-1]
root = node(val)
r = ins.index(val) #根节点索引
k=r-j #当前根节点的左子树节点数
root.left=_Create(post,i,ins,j,k)
root.right=_Create(post,i+k,ins,r+1,n-k-1)
return root
bt = Create(post,inorder)
ret = bt.levelorder()
print(*ret)
276

被折叠的 条评论
为什么被折叠?



