分治法作业2

1.求二叉树的先序遍历

【问题描述】已知一棵二叉树的中序遍历和后序遍历,求二叉树的先序遍历

【输入形式】 输入数据有多组,第一行是一个整数t (t<1000),代表有t组测试数据。每组包括两个长度小于50 的字符串,第一个字符串表示二叉树的中序遍历序列,第二个字符串表示二叉树的后序遍历序列。

【输出形式】输出二叉树的先序遍历序列

【样例输入】

2

dbgeafc

dgebfca

lnixu

linux

【样例输出】

abdegcf

xnliu

def preOrder(inOrder, postOrder):
    if not inOrder or not postOrder:
        return
    root = postOrder[-1]
    index = inOrder.index(root)
    leftInOrder = inOrder[:index]
    rightInOrder = inOrder[index+1:]
    leftPostOrder = postOrder[:index]
    rightPostOrder = postOrder[index:-1]
    print(root, end='')
    preOrder(leftInOrder, leftPostOrder)
    preOrder(rightInOrder, rightPostOrder)
n=int(input())
for i in range(n):
    inOrder = list(input())
    postOrder = list(input())
    preOrder(inOrder, postOrder)
    print()

你可能感兴趣的:(《,算法设计与分析,》,算法,数据结构,python)