天梯賽 L2 006 樹的遍歷 題解

2021-10-04 10:11:16 字數 1307 閱讀 7183

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

輸入格式:

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

輸出格式:

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

輸入樣例:

72 3 1 5 7 6 4

1 2 3 4 5 6 7

輸出樣例:

4 1 6 3 5 7 2

#include 

#include

#include

#include

#include

using namespace std;

int find

(int *list,int n)

return p-list;

}class

node};

class

tree

vector

print()

return ans;

}private

: node *root;

node *

creative

(int *list1,int *list2,int be,int end,int be2,int end2)};

int main()

for(int i =

0; i < n;

++i)

tree x

(list1,list2,

0,n-1,

0,n-1)

;//建立二叉樹

vectorans=x.

print()

;for

(int j =

0; j < ans.

size()

;++j)

return0;

}

十分基礎的根據兩種遍歷結果來生成二叉樹的題目

對於每一棵樹/子樹來說,自己後序遍歷所生成的結果中,根節點永遠在最後,而中序遍歷裡,根節點出現位置的左邊是左子樹中所有的節點,右子樹同理。

根據這些性質,我們可以在每次遞迴呼叫中將左子樹和右子樹的後序/中序遍歷給分離出來,建立根節點並遞迴呼叫發生函式使根節點的左右孩子分別指向兩棵子樹利用其後序/中序遍歷生成的樹的根節點,直到其不存在左子樹和右子樹為止。

然後利用bfs的方式按順序將節點加入佇列之中,輸出列印即可

天梯賽習題 L2 006 樹的遍歷

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

天梯賽 L2 006 樹的遍歷(序列建樹)

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

L2 006 樹的遍歷

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