其他分享
首页 > 其他分享> > [2001年NOIP普及组] 求先序排列

[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