如何根據層序序列和中序序列建立一棵樹

2021-10-19 14:18:02 字數 905 閱讀 2254

參考該部落格

最近複習了樹方面的資料結構知識,在做題的過程中,我發現都是給先序(或者後序)與中序讓求一棵樹,沒有碰到過給你層序和中序讓求樹的情況,故在此做乙個整理以便於今後回顧複習。

附有注釋的**:

#include

using

namespace std;

const

int maxn =

110;

int level[maxn]

,pos[maxn]

;//level儲存層序序列,pos用於指示在中序序列中各個點的相對位置,下面會提到

int n;

struct node

;void

dfs(node*

&root,

int index)

//由於層序序列是自上而下的,因此我們從上到下乙個個插入結點,如果要插入的結點在根的左邊,那麼遞迴地在左子樹中插入;右邊同理。

if(pos[level[index]

]>data]

)int

main()

node* root =

null

;for

(int i=

0;i)dfs

(root,i)

;}

對於先序結合中序而言,中序的作用是指示每一次的根結點所在的位置,並能夠把左右區分開。

而層序結合中序而言,中序的作用是指示各個點在數中相對的左右位置。

由此可見中序序列的價值。

樣例:

735

4267

1//層序25

3647

1//中序

根據先序序列和中序,後序和中序序列建立二叉樹

思考 如何才能確定一棵樹?結論 通過中序遍歷和先序遍歷可以確定乙個樹 通過中序遍歷和後續遍歷可以確定乙個樹 通過先序遍歷和後序遍歷確定不了乙個樹。演算法實現 一 先序和中序重建二叉樹,按層次遍歷輸出 include include include include include include in...

根據先序序列和中序序列求後序序列的迴圈實現

1 include2 include3 include4 include5 6using namespace std 78 設計樹的資料模型 9 start 1011 template class t 12class treeseq public vector13 1819 template cla...

根據先序序列和中序序列求後序序列的遞迴實現

示例 測試位址 1 1 include2 2 include3 3 include445 5using namespace std 66 77 設計樹的資料模型 8 8 start99 1010 template class t 1111 class treeseq public vector12 ...