一般二叉樹遍歷序列轉換

2021-10-09 21:37:52 字數 1391 閱讀 2429

根據一棵二叉樹的中序,後序遍歷的結果,可以唯一的確定一棵二叉樹,這裡附上**實現從中序,後序遍歷的序列轉換成廣度優先搜尋遍歷的序列(這裡預設二叉樹結點數目小於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 中查詢此...