根據一棵二叉樹的中序,後序遍歷的結果,可以唯一的確定一棵二叉樹,這裡附上**實現從中序,後序遍歷的序列轉換成廣度優先搜尋遍歷的序列(這裡預設二叉樹結點數目小於10000)
#include
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace std;
const
int maxn =
10010
;struct node
tre[maxn]
;int in[maxn]
, post[maxn]
, mp[maxn]
;int root, cnt, n;
queue<
int>q;
intbuild
(int l,
int r,
int mid)
int tmp = mp[post[mid]
], t;
tre[
++cnt]
.info = post[mid]
; t = cnt;
tre[t]
.lef =
build
(l, tmp -
1, mid - r + tmp -1)
; tre[t]
.rig =
build
(tmp +
1, r, mid -1)
;return t;
}void
print()
printf
("\n");
}int
main()
for(i =
1; i <= n;
++i)
root =
build(1
, n, n)
;print()
;}return0;
}/*3 2 1 4 5 7 6
3 1 2 5 6 7 4
7 8 11 3 5 16 12 18
8 3 11 7 16 18 12 5
255255
*/
321
4576
3125
6747
81135
1612188
311716
1812
5255
255
427
3156
571211
161883
255
二叉樹的遍歷以及遍歷序列構建二叉樹
lrn 後序遍歷 通過遍歷序列構造二叉樹 滿二叉樹的前序序列轉後序序列 結點結構 typedef struct node node 我們以鏈式儲存的二叉樹為例,二叉樹的遍歷有 顯然,我們所說的 序 指的是我們對結點進行訪問的先後順序 由兩個函式組成,乙個遞迴函式,以及呼叫這個遞迴函式的函式 void...
二叉樹遍歷序列還原
給出二叉樹的中序遍歷序列和後序遍歷序列,程式設計還原該二叉樹。輸入 第1行為二叉樹的中序遍歷序列 第2行為二叉樹的後序遍歷序列 輸出 二叉樹的按層遍歷序列 測試輸入 badcfeg bdfgeca 測試輸出 abcdefg 源 include include include includetyped...
二叉樹 根據二叉樹遍歷序列構造二叉樹
二叉樹的節點型別宣告如下 struct btnode 定理1任何 n 0 個不同節點的二叉樹,都可由它的前序序列和中序序列唯一地確定。根據前序遍歷的特點,知前序序列 presequence 的首個元素 presequence 0 為二叉樹的根 root 然後在中序序列 insequence 中查詢此...