時間限制
400 ms
記憶體限制
65536 kb
**長度限制
8000 b
判題程式
standard 作者
陳越給定一棵二叉樹的後序遍歷和中序遍歷,請你輸出其層序遍歷的序列。這裡假設鍵值都是互不相等的正整數。
輸入格式:
輸入第一行給出乙個正整數n(<=30),是二叉樹中結點的個數。第二行給出其後序遍歷序列。第三行給出其中序遍歷序列。數字間以空格分隔。
輸出格式:
在一行中輸出該樹的層序遍歷的序列。數字間以1個空格分隔,行首尾不得有多餘空格。
輸入樣例:
7輸出樣例:2 3 1 5 7 6 4
1 2 3 4 5 6 7
4 1 6 3 5 7 2
這個題可以有好幾種解法:就本人水平,目前只會通過陣列來實現,這個方法比較浪費空間資料大了就不適用。
首先對於二叉樹要了解,前序,中序,後序,層序的概念;
1.前序:先根節點,後左子樹,最後右子樹;
2.中序:先左子樹,後根節點,最後右子樹;
3.後序:先左子樹,後右子樹,最後根節點;
使用陣列來求需要知道對於二叉樹來說:左子樹的座標是2*index+1
對於右子樹座標是2*index+2;
所以使用遞迴查詢更節點,儲存在陣列中,最後由於有一些陣列的值不是題目要求的,所以有個去0的過程。
在遞迴的過程中最重要的是判斷每次左子樹與右子樹的範圍;在這錯了好長時間;
**如下:
#include#include#include#include#includeconst int maxn=10000;
using namespace std;
int s1[maxn],s2[maxn];
int s3[maxn];
void judge(int p1,int p2,int q1,int q2,int index)
int i;
for(i=0;s1[q2]!=s2[p1+i];i++);
s3[index]=s1[q2];
//cout<>n)
cout<
PAT L2 006 樹的遍歷
給定一棵二叉樹的後序遍歷和中序遍歷,請你輸出其層序遍歷的序列。這裡假設鍵值都是互不相等的正整數。輸入樣例 72 3 1 5 7 6 4 1 2 3 4 5 6 7 輸出樣例 4 1 6 3 5 7 2 include include include includeusing namespace st...
PAT L2 006 樹的遍歷
題目 給定一棵二叉樹的後序遍歷和中序遍歷,請你輸出其層序遍歷的序列。這裡假設鍵值都是互不相等的正整數。輸入格式 輸入第一行給出乙個正整數n 30 是二叉樹中結點的個數。第二行給出其後序遍歷序列。第三行給出其中序遍歷序列。數字間以空格分隔。輸出格式 在一行中輸出該樹的層序遍歷的序列。數字間以1個空格分...
PAT L2 006 樹的遍歷
參考部落格 給定一棵二叉樹的後序遍歷和中序遍歷,請你輸出其層序遍歷的序列。這裡假設鍵值都是互不相等的正整數。輸入格式 輸入第一行給出乙個正整數n 30 是二叉樹中結點的個數。第二行給出其後序遍歷序列。第三行給出其中序遍歷序列。數字間以空格分隔。輸出格式 在一行中輸出該樹的層序遍歷的序列。數字間以1個...