(已知二叉樹的中後,先中序兩序遍歷建樹)

2022-07-19 14:42:19 字數 1161 閱讀 3657

l2-006 樹的遍歷

題目鏈結

l2-006 樹的遍歷 (25 分)

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

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

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

7

2 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#include#include#include#include#include#includeusing namespace std;

#define inf 0x3f3f3f3f

#define ri register int

typedef long long ll;

int l[50],r[50];

vectorans;

int x_order[50],z_order[50],h_order[50];//先序遍歷 中序遍歷 後序遍歷

int build(int lm1,int rm1,int lm2,int rm2)

queueque;

void bfs()

if(r[tem]!=0) }}

int main()

queue

que;

void

bfs()

if(l[tem]!=0

) }

}int

main()

for(int i=0;i)

int root=build(0,n-1,0,n-1

); que.push(root);

bfs();

int len=ans.size();

for(int i=0;i)

else

}return0;

}

已知中序遍歷和先序遍歷重建二叉樹

main.cpp constructbinarytree created by bazinga on 2017 3 12.根據前序遍歷和中序遍歷求二叉樹的結構 已知前序遍歷的第乙個值為根節點 而根節點在中序遍歷中的位置就能確定他的左右子樹。然後對區分開的左右子樹進行遞迴。include includ...

二叉樹 已知後序 中序遍歷,求先序遍歷

二叉樹後序遍歷序列是dabec,中序遍歷序列debac,它的前序遍歷的序列是什麼 1.由後序 lrd 得知c肯定為根結點 2.由中序 ldr 以c為根節點該樹必然只有左子樹 3.先從後序入樹 dabec 由遍歷規則得知,e 為第二層節點 於是有ce 4.結合中序遍歷debac觀察節點,由於 e為第二...

二叉樹遍歷(已知先序 中序求後序)

時間限制 1000 ms 記憶體限制 65536 kb 提交數 11 通過數 9 輸入一棵二叉樹的先序和中序遍歷序列,輸出其後序遍歷序列。共兩行,第一行乙個字串,表示樹的先序遍歷,第二行乙個字串,表示樹的中序遍歷。樹的結點一律用小寫字母表示。一行,表示樹的後序遍歷序列。abdec dbeac deb...