l2-006. 樹的遍歷
時間限制
400 ms
記憶體限制
65536 kb
**長度限制
8000 b
判題程式
standard
作者陳越
給定一棵二叉樹的後序遍歷和中序遍歷,請你輸出其層序遍歷的序列。這裡假設鍵值都是互不相等的正整數。
輸入格式:
輸入第一行給出乙個正整數n(<=30),是二叉樹中結點的個數。第二行給出其後序遍歷序列。第三行給出其中序遍歷序列。數字間以空格分隔。
輸出格式:
在一行中輸出該樹的層序遍歷的序列。數字間以1個空格分隔,行首尾不得有多餘空格。
輸入樣例:
72 3 1 5 7 6 4
1 2 3 4 5 6 7
輸出樣例:
4 1 6 3 5 7 2
思路: 給出中序和後序構建二叉樹。
首先我們由後序可以確定樹的根節點,之後我們再在中序中找到根節點所處的位置,可知,在根節點之前的是根節點的左子樹,後面的是根節點的右之樹。繼而在中序中找到左子樹和右子樹的長度(也就是個數),再在後序中找到當前的子樹的根節點,重複上面的步驟,就可以很完美的構建出二叉樹了。如圖:
圖中紅色的為二叉樹各節點的位置
ac**:
#include #include #include #define maxn 1000
using namespace std;
int a[maxn], b[maxn];
struct node
p[maxn];
int built(int al, int ar, int bl, int br)
void bfs(int x)
int len = v.size();
for(int i = 0; i < len; i++)
else
}return ;
}int main()
for(int i = 0; i < n; i++)
built(0, n - 1, 0, n - 1);
int root = b[n - 1];
bfs(root);
return 0;
}
L2 006 樹的遍歷
時間限制 400 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 陳越 給定一棵二叉樹的後序遍歷和中序遍歷,請你輸出其層序遍歷的序列。這裡假設鍵值都是互不相等的正整數。輸入格式 輸入第一行給出乙個正整數n 30 是二叉樹中結點的個數。第二行給出其後序遍歷...
L2 006 樹的遍歷
時間限制 400 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 陳越 給定一棵二叉樹的後序遍歷和中序遍歷,請你輸出其層序遍歷的序列。這裡假設鍵值都是互不相等的正整數。輸入格式 輸入第一行給出乙個正整數n 30 是二叉樹中結點的個數。第二行給出其後序遍歷...
L2 006 樹的遍歷
給定一棵二叉樹的後序遍歷和中序遍歷,請你輸出其層序遍歷的序列。這裡假設鍵值都是互不相等的正整數。輸入第一行給出乙個正整數n 30 是二叉樹中結點的個數。第二行給出其後序遍歷序列。第三行給出其中序遍歷序列。數字間以空格分隔。在一行中輸出該樹的層序遍歷的序列。數字間以1個空格分隔,行首尾不得有多餘空格。...