[2001年NOIP普及组] 求先序排列
作者:互联网
给出一棵二叉树的中序与后序排列。求出它的先序排列。(约定树结点用不同的大写字母表示,长度<=8)。
输入
第一行输入一个字符串表示二叉树的中序排列,第二行输入一个字符串表示二叉树的后序排列。输出
对于每组输入数据,输出二叉树的先序排列。样例输入
BADC BDCA
样例输出
ABCD
输入中序遍历和后序遍历求先序遍历
先在中序遍历种确定根节点的位置
以先序遍历的方式遍历
#include<bits/stdc++.h> using namespace std; string In,Post; void Work(int LI,int RI,int LP,int RP) { cout<<Post[RP]; int MD=In.find(Post[RP]);//在中序遍历寻找root节点的位置 if(MD>LI) { Work(LI,MD-1,LP,LP+MD-LI-1);
//遍历左子树
} if(MD<RI) { Work(MD+1,RI,LP+MD-LI,RP-1);
//遍历右子树 } } int main() { cin>>In>>Post; Work(0,In.length()-1,0,Post.length()-1); return 0; }
标签:排列,遍历,求先序,NOIP,int,中序,2001,二叉树,输入 来源: https://www.cnblogs.com/XdzxBo/p/16589002.html