time limit: 1000ms
memory limit: 65536kb
submit
statistic
discuss
problem description
已知一棵二叉樹的前序遍歷和中序遍歷,求二叉樹的後序遍歷和層序遍歷。
input
輸入資料有多組,第一行是乙個整數t (t<1000),代表有t組測試資料。每組包括兩個長度小於50 的字串,第乙個字串表示二叉樹的先序遍歷序列,第二個字串表示二叉樹的中序遍歷序列。
output
每組第一行輸出二叉樹的後序遍歷序列,第二行輸出二叉樹的層次遍歷序列。
example input
2abdegcf
dbgeafc
xnliu
lnixu
example output
dgebfcaabcdefg
linux
xnuli
hint
注釋寫的很清楚,準備開始慢慢啃資料結構
#include using namespace std;
string a,b;
struct node
;node* create(int l1,int r1,int l2,int r2)
}int numleft=record-l2;//通過中序遍歷確定左樹的數目
root->lchild=create(l1+1,l1+numleft,l2,record-1);//先序遍歷只是負責提供根節點的,中序遍歷負責區分左右樹,然後把中序遍歷確定的區間範圍加到先序遍歷上,完成dfs建樹。
root->rchild=create(l1+numleft+1,r1,record+1,r2);
return root;
}void houxu(node* root)
void bfs(node* root)
}int main()
{ int n;
cin>>n;
getchar();
while(n--)
{getline(cin,a);
getline(cin,b);
node* root=create(0,a.length()-1,0,b.length()-1);
houxu(root);
cout<
資料結構實驗之求二叉樹後序遍歷和層次遍歷
已知一棵二叉樹的前序遍歷和中序遍歷,求二叉樹的後序遍歷。輸入資料有多組,第一行是乙個整數t t 1000 代表有t組測試資料。每組包括兩個長度小於50 的字串,第乙個字串表示二叉樹的先序遍歷序列,第二個字串表示二叉樹的中序遍歷序列。每組第一行輸出二叉樹的後序遍歷序列,第二行輸出二叉樹的層次遍歷序列 ...
資料結構實驗之求二叉樹後序遍歷和層次遍歷
time limit 1000ms memory limit 65536k 已知一棵二叉樹的前序遍歷和中序遍歷,求二叉樹的後序遍歷。輸入資料有多組,第一行是乙個整數t t 1000 代表有t組測試資料。每組包括兩個長度小於50 的字串,第乙個字串表示二叉樹的先序遍歷序列,第二個字串表示二叉樹的中序遍...
資料結構實驗之求二叉樹後序遍歷和層次遍歷
資料結構實驗之求二叉樹後序遍歷和層次遍歷 time limit 1000ms memory limit 65536k 有疑問?點這裡 題目描述 已知一棵二叉樹的前序遍歷和中序遍歷,求二叉樹的後序遍歷。輸入 輸入資料有多組,第一行是乙個整數t t 1000 代表有t組測試資料。每組包括兩個長度小於50...