參考該部落格
最近複習了樹方面的資料結構知識,在做題的過程中,我發現都是給先序(或者後序)與中序讓求一棵樹,沒有碰到過給你層序和中序讓求樹的情況,故在此做乙個整理以便於今後回顧複習。附有注釋的**:
#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 ...