POJ 2255(水題)

題目LINK

題意解釋

這道題的意思簡單的概述就是給出二叉樹的前序遍歷和中序遍歷,讓你輸出后續(xù)遍歷。

收獲

這道題考驗了一個你對遞歸的理解以及如何用前序遍歷和中序遍歷輸出后續(xù)遍歷。整體的每次遞歸都是找出一個根結點,然后把中序序列由根結點分成兩個樹,再重復找根節(jié)點的過程,個人推薦用筆進行推下,然后再看代碼就會非常清晰。
注意:頭文件用cstring會CE,注意下

AC代碼

#include <iostream>
#include <string>

using namespace std;

string PreString, InString;

void recovery(int Lstr1, int Rstr1, int Lstr2, int Rstr2) {
    if (Lstr2 == Rstr2)
    {
        cout << InString[Lstr2];
        return;
    }
    if (Lstr2 > Rstr2)//這是中止條件
        return;
    //找到根節(jié)點
    int i = Lstr2;
    while (PreString[Lstr1] != InString[i])
        i++;
    int mov = i - Lstr2;
    //下面是分為兩顆子樹,先查左邊,再查右邊
    recovery(Lstr1 + 1, Lstr1 + mov, Lstr2, i - 1);
    recovery(Lstr1 + mov + 1, Rstr1, i + 1, Rstr2);
    
    
    cout << InString[i];
    return;
}
int main(void){
    while (cin >> PreString >> InString) {
        recovery(0, PreString.size() - 1, 0, InString.size()-1);
        cout << endl;
    }
    return 0;
}
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 動態(tài)規(guī)劃 111. 爬樓梯思路類似斐波那契數(shù)列注意考慮第 0 階的特殊情況 272. 爬樓梯 II思路類似上題,只...
    6默默Welsh閱讀 2,618評論 0 1
  • 編譯環(huán)境:python v3.5.0, mac osx 10.11.4 前述內容: 線性表 隊列 堆棧 線性結構...
    擲骰子的求閱讀 2,754評論 1 7
  • 因為之前就復習完數(shù)據(jù)結構了,所以為了保持記憶,整理了一份復習綱要,復習的時候可以看著綱要想具體內容。 樹 樹的基本...
    牛富貴兒閱讀 7,536評論 3 10
  • 這些年來,那么多有關青春、愛情題材的影視作品、小說,一部又一部,可并不是每一個人都是男女主角,有一個帥氣或美麗的同...
    峰不止閱讀 8,161評論 0 3
  • 當今夏季,出汗會比較厲害,其實乳液是不太需要的,好的乳液一瓶也幾百上千,不要聽信那些專柜Ba的話、或者什么雜七雜八...
    冷亦成閱讀 264評論 0 0

友情鏈接更多精彩內容