首页 > 其他 > 详细

求先序排列(二叉树已知中序和后序,求先序)

时间:2019-04-26 11:29:32      阅读:282      评论:0      收藏:0      [点我收藏+]

问题 A: [2001_p3]求先序排列

时间限制: 1 Sec  内存限制: 125 MB
提交: 90  解决: 73

题目描述

给出一棵二叉树的中序与后序排列。求出它的先序排列。(约定树结点用不同的大写字母表示,长度<=8)。

 

输入

每个测试文件只包含一组测试数据,每组输入包含两行,第一行输入一个字符串表示二叉树的中序排列,第二行输入一个字符串表示二叉树的后序排列。

 

输出

对于每组输入数据,输出二叉树的先序排列。

 

样例输入

BADC
BDCA

样例输出

ABCD

提示

#include<iostream>
#include<bits/stdc++.h>
using namespace std;
string s1,s2;
void print(int l1,int r1,int l2,int r2)
{
    //cout<<" "<<l1<<" "<<r1<<" "<<l2<<" "<<r2<<endl;
    /*if(r1<=l1)
    {
        cout<<s1[l1];
        return;
    }
    if(r2<=l1)
    {
        cout<<s2[l1];
        return;
    }*/
    int k=-1;
    for(int i=l1;i<r1;i++)
    {
        if(s1[i]==s2[r2-1])
        {
            cout<<s1[i];
            k=i;
            break;
        }
    }
    //cout<<"k "<<k<<endl;
    if(k>l1)
    {
        //cout<<"进入左"<<endl;
        print(l1,k,l2,k-l1+l2);
    }
    if(r1>k+1)
    {
        //cout<<"进入右"<<endl;
        print(k+1,r1,k-l1+l2,r2-1); 
    }
    
 } 
int main()
{
    cin>>s1>>s2;
    print(0,s1.length(),0,s2.length());
    return 0;
 } 

 

 
[提交][状态][Edit] [TestData]

求先序排列(二叉树已知中序和后序,求先序)

原文:https://www.cnblogs.com/caiyishuai/p/10773219.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!