給定一棵二叉樹的後序遍歷和中序遍歷,請你輸出其層序遍歷的序列。這裡假設鍵值都是互不相等的正整數。
輸入第一行給出乙個正整數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...