1. 程式人生 > 其它 >2022.4.6

2022.4.6

洛谷p1305

看了題解後知道,想輸出前序遍歷就只需要先設string a用於儲存根節點及其左右節點,之後再依次輸入其他的,

在a中找到其根節點的位置後插入進去即可。

由於剛開始學,我並不會寫這種題,看了這個題解後我發現這樣的輸入也可以輸出後序遍歷。

改寫的關鍵在於,由於前序遍歷為根-左-右,後序遍歷為左-右-根,所以可以將輸入後的左右節點互換,

使輸入的字串變為根-右-左的形式,然後繼續用這種方法插入。再倒序輸出即可。

emmmm中序輸出還沒想//等想到了再改=w=

/* 這是通過給出各個節點及其左右節點而寫出前序遍歷的程式碼
#include<string>
#include<iostream>
#include<algorithm>
using namespace std;
struct node
{
int l;
int r;
};
node a[30];
int n;
int main()
{
std::ios::sync_with_stdio(false);
cin>>n;
string a;
cin>>a;
for(int i=1;i<n;i++)
{
string s;
cin>>s;
int x=a.find(s[0]);
s.erase(s.begin());
a.insert(x+1,s);
}
for(int i=0;i<a.size();i++)
{
if(a[i]!='*')
cout<<a[i];
}
cout<<"\n";
return 0;
}
*/