由中序和後序(前序)序列求前序(後序)序列

2021-08-09 21:35:46 字數 767 閱讀 6597

已知二叉樹的中序和後序(前序)序列可以唯一確定一顆二叉樹,例如,

中序序列:1 2 3 4 5 6

後序序列:3 4 2 6 5 1

可以唯一確定一顆二叉樹,如下圖:

思路是這樣的:

我們知道對於一顆二叉樹,根節點是後序遍歷序列的最後乙個,找到根節點後,我們由中序遍歷的特點知道,中序序列中,根節點 左邊的是左子樹,右邊的是右子樹。之後分別在左子樹、右子樹中運用這種思路,這樣遞迴下去,二叉樹就唯一確定了。

比如上面的例子,根節點是 1, 則左子樹序列為3 2 4, 右子樹序列是 6 5,

左子樹序列中, 根節點是2,左子樹序列是3,右子樹序列是4, 右子樹序列6 5也可以這樣去確定.

下面是**實現:

// 由中序序列、後序序列得到前序序列

#include #include #include #define maxlength 20

int poststack = ; // 後序序列

int instack = ; // 中序序列

void get_pre_order(int root, int start, int end)

int main(void)

void get_post_order(int root, int start, int end)

// end

前序中序求後序 後序中序求前序層次 模板

這是資料結構的知識。剛開始先拒絕用指標去寫。當我把這個想法和別人分享是,別人說不喜歡用指標的程式設計師不是乙個好的c c 程式設計師。所以,就有了這麼勵志的時刻,我參考大牛的 自己用指標寫了個遍,直接1a 不用指標總是出現各種想不到的錯誤。心累。orz.include include include...

前序中序求後序

test fdxeag xdefag 涉及到二叉樹的問題最好不用動態申請,對記憶體的管理很麻煩 採用預分配的靜態陣列 本題目由前序和中序得到後序,方法 先構造二叉樹,再進行 include includestruct nodetree 50 char str1 50 str2 50 分別存放前序和中...

根據前序中序求後序

如前序 為 abdecgf 中序 為 bdacgef 先 根據前序第乙個節點 把中序分為bd和cgef兩部分,a為根節點,a左邊為左子樹,右邊為右子樹。再把左右子樹分別做上述步驟。以此類推 根據第二,第三.個節點構成二叉樹 a b e d c f g b 再根據後序的性質得到dbgcbfea 知道後...