GPLT L2 006 樹的遍歷

2021-09-13 13:31:25 字數 888 閱讀 2768

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

輸入第一行給出乙個正整數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
建立三個vector,中序遍歷in、後序遍歷post、層序遍歷level(level初始化為-1,-1表示此處沒有結點)。自定義函式levelorder()的作用是根據中序和後序得到層序遍歷,四個引數:root表示後序遍歷的根節點,index表示當前的根結點在二叉樹層序遍歷中所對應的下標(從0開始)。尋找根結點root在中序遍歷中的位置i以區分左右子樹的位置。然後再對左右子樹進行層序遍歷,左孩子為2*index + 1,右孩子為2*index + 2。

#include using namespace std;

vectorin,post,level(1e5,-1);

void levelorder(int root,int start,int end,int index)

int main()

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

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

bool isvirgin = true;

for(int i = 0; i < level.size(); i++)

else}}

return 0;

}

GPLT L2 006 樹的遍歷

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

GPLT L2 006 樹的遍歷(二叉樹)

給定一棵二叉樹的後序遍歷和中序遍歷,請你輸出其層序遍歷的序列。這裡假設鍵值都是互不相等的正整數。後序遍歷序列 左子樹遍歷序列 右子樹遍歷序列 根節點。中序遍歷序列 左子樹遍歷序列 根節點 右子樹遍歷序列。找到根節點,再利用根節點計算新的後 中遍歷序列端點。注意建樹時傳根節點的引用。include u...

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...