L2-006 树的遍历 Python 团体程序设计天梯赛-练习集

L2-006 树的遍历 Python 团体程序设计天梯赛-练习集_第1张图片

思路:根据中序和后序查树的根与节点,输出层序,可以用模拟的方式,过程中直接存储树的每一层信息

主要过程就是,根据后序找根节点,中序划分左右子树

先看后序遍历-最后遍历根节点,所以最后一个元素是根节点

然后因为中序遍历是左-根-右的顺序,所以就可以直接用找到的根节点划分出左右子树

然后在划分后的子树基础上重复以上操作

代码如下:

input()
h_list = list(input().split())
z_list = list(input().split())
zip_list = [[h_list,z_list]]
tree_l,tree_r,tree_lb,tree_rb = [],[],[],[]
tree_rows = []
#模拟建树过程,找到层序遍历每一层的元素,保存并输出
while zip_list!=[]:
    re_list = []
    for x in zip_list:
        node_t = x[0]
        node_b = x[1]
        if len(node_t)>1 and len(node_b)>1:
            tree_rows.append(node_t[-1])
            tree_lb = node_b[0:node_b.index(node_t[-1])]
            tree_l = node_t[0:len(tree_lb)]
            tree_rb = node_b[len(tree_lb)+1:len(node_b)]
            tree_r = node_t[len(tree_l):-1]
            re_list.append([tree_l,tree_lb])
            re_list.append([tree_r,tree_rb])
        if len(node_t)==1 and len(node_b)==1:
            tree_rows.append(node_t[0])
    zip_list = re_list[:]
print(*tree_rows)

L2-006 树的遍历 Python 团体程序设计天梯赛-练习集_第2张图片

 

提交结果:

L2-006 树的遍历 Python 团体程序设计天梯赛-练习集_第3张图片

你可能感兴趣的:(天梯赛Python,python,开发语言)