L2 006 樹的遍歷

2021-07-29 03:53:41 字數 1207 閱讀 4294

l2-006. 樹的遍歷

時間限制

400 ms

記憶體限制

65536 kb

**長度限制

8000 b

判題程式

standard

作者陳越

給定一棵二叉樹的後序遍歷和中序遍歷,請你輸出其層序遍歷的序列。這裡假設鍵值都是互不相等的正整數。

輸入格式:

輸入第一行給出乙個正整數n(<=30),是二叉樹中結點的個數。第二行給出其後序遍歷序列。第三行給出其中序遍歷序列。數字間以空格分隔。

輸出格式:

在一行中輸出該樹的層序遍歷的序列。數字間以1個空格分隔,行首尾不得有多餘空格。

輸入樣例:

72 3 1 5 7 6 4

1 2 3 4 5 6 7

輸出樣例:

4 1 6 3 5 7 2

思路: 給出中序和後序構建二叉樹。

首先我們由後序可以確定樹的根節點,之後我們再在中序中找到根節點所處的位置,可知,在根節點之前的是根節點的左子樹,後面的是根節點的右之樹。繼而在中序中找到左子樹和右子樹的長度(也就是個數),再在後序中找到當前的子樹的根節點,重複上面的步驟,就可以很完美的構建出二叉樹了。如圖:

圖中紅色的為二叉樹各節點的位置

ac**:

#include #include #include #define maxn 1000

using namespace std;

int a[maxn], b[maxn];

struct node

p[maxn];

int built(int al, int ar, int bl, int br)

void bfs(int x)

int len = v.size();

for(int i = 0; i < len; i++)

else

}return ;

}int main()

for(int i = 0; i < n; i++)

built(0, n - 1, 0, n - 1);

int root = b[n - 1];

bfs(root);

return 0;

}

L2 006 樹的遍歷

時間限制 400 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 陳越 給定一棵二叉樹的後序遍歷和中序遍歷,請你輸出其層序遍歷的序列。這裡假設鍵值都是互不相等的正整數。輸入格式 輸入第一行給出乙個正整數n 30 是二叉樹中結點的個數。第二行給出其後序遍歷...

L2 006 樹的遍歷

時間限制 400 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 陳越 給定一棵二叉樹的後序遍歷和中序遍歷,請你輸出其層序遍歷的序列。這裡假設鍵值都是互不相等的正整數。輸入格式 輸入第一行給出乙個正整數n 30 是二叉樹中結點的個數。第二行給出其後序遍歷...

L2 006 樹的遍歷

給定一棵二叉樹的後序遍歷和中序遍歷,請你輸出其層序遍歷的序列。這裡假設鍵值都是互不相等的正整數。輸入第一行給出乙個正整數n 30 是二叉樹中結點的個數。第二行給出其後序遍歷序列。第三行給出其中序遍歷序列。數字間以空格分隔。在一行中輸出該樹的層序遍歷的序列。數字間以1個空格分隔,行首尾不得有多餘空格。...