python-求树的先序遍历

python-求树的先序遍历_第1张图片
python

题目是这样的:
给定二叉树的节点个数、以及后序、中序遍历,求其先序遍历。
示例如下:
input:
3
1 2 3
3 1 2

output:
3 2 1

一种简单的解决方案是这样的:

n = int(input()) # 读入节点个数
hx = input().split(' ') # 读入后序遍历
zx = input().split(' ') # 读入中序遍历
xx = [] # 建立先序遍历表

# 函数 后序, 中序 确定先序
def x(h, z):
   # 递归返回条件
   if len(h) == 0: 
      return
   # 后序遍历的最后访问的必定是根
   e = h[-1]
   # 先序遍历第一个访问的是根
   xx.append(e)
   # 中序遍历由根划分为左右子树
   i = z.index(e)
   hl = h[:i]
   hr = h[i:-1]
   zl = z[:i]
   zr = z[i+1:]
   # 递归传入左右子树
   x(hl, zl)
   x(hr, zr)

# 调用函数
x(hx,zx)
# 建立输出字符串
sc = ''
for i in xx:
   sc += i + ' '

print(sc)

有任何问题请回复提出。然后欢迎关注微信公众号格物致愚

python-求树的先序遍历_第2张图片
格物致愚

你可能感兴趣的:(python-求树的先序遍历)