PAT甲級真題1020 樹的遍歷 遞迴)

2021-10-11 02:19:00 字數 1136 閱讀 2211

乙個二叉樹,樹中每個節點的權值互不相同。

現在給出它的後序遍歷和中序遍歷,請你輸出它的層序遍歷。

輸入格式

第一行包含整數 nn,表示二叉樹的節點數。

第二行包含 nn 個整數,表示二叉樹的後序遍歷。

第三行包含 nn 個整數,表示二叉樹的中序遍歷。

輸出格式

輸出一行 nn 個整數,表示二叉樹的層序遍歷。

資料範圍

1≤n≤301≤n≤30

輸入樣例:

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;

const

int n=30+

10;//記錄中序遍歷的點

vector<

int>

inorder

(n,0);

//記錄後序遍歷的點

vector<

int>

postorder

(n,0);

//記錄中序遍歷序列每個點的相應位置 第一維表示值 第二維其在中序序列中的具體位置

unordered_map<

int,

int>pos;

//記錄原本的樹的資訊 第一維為表示樹結點的值 第二維表示樹節點指向的節點

unordered_map<

int,

int>l,r;

//返回值為當前所在節點區間的根

intbuild

(int il,

int ir,

int pl,

int pr)

void

bfs(

int root)

}int

main()

int root=

build(0

,n-1,0

,n-1);

bfs(root)

;return0;

}

PAT甲級 1020 樹的遍歷

用了乙個hash表方便後續的查詢工作。pos的作用是記錄中序遍歷中 的該值所在的陣列下標編號 int q n 模擬乙個佇列,用於輸出層序遍歷 intbuild int il,int ir,int pl,int pr void bfs int root 輸出個層序遍歷 int main int roo...

PAT甲級真題1138 後序遍歷

假設二叉樹上各結點的權值互不相同且都為正整數。給定二叉樹的前序遍歷和中序遍歷,請你輸出二叉樹的後序遍歷的第乙個數字。輸入格式 第一行包含整數 nn,表示二叉樹結點總數。第二行給出二叉樹的前序遍歷序列。第三行給出二叉樹的中序遍歷序列。輸出格式 輸出二叉樹的後序遍歷的第乙個數字。資料範圍 1 n 500...

PAT甲級真題1153

pat 准考證號由 44 部分組成 第 11 位是級別,即 t 代表頂級 a 代表甲級 b 代表乙級 第 2 42 4 位是考場編號,範圍從 101101 到 999999 第 5 105 10 位是考試日期,格式為年 月 日順次各佔 22 位 最後 11 1311 13 位是考生編號,範圍從 00...