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


問題 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]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM