如何根據前序遍歷序列和中序遍歷序列確定二叉樹

2021-07-05 03:31:08 字數 808 閱讀 5423

分段,每一段找根節點,就好, 找root,有點遞迴的思路。

例如::

假設某二叉樹的先序遍歷序列是abdgcefh,中序遍歷序列是dgbaechf,畫出二叉樹,並給出其後序遍歷序列.

以下面的例題為例進行講

已知一棵二叉樹的先序遍歷序列和中序遍歷序列分別是abdgcefh、dgbaechf,求二叉樹及後序遍歷序列.

分析:先序遍歷序列的第乙個字元為根結點.對於中序遍歷,根結點在中序遍歷序列的中間,左邊部分是根結點的左子樹的中序遍歷序列,右邊部分是根結點的右子樹的中序遍歷序列.

先序:abdgcefh --> a bdg cefh

中序:dgbaechf --> dgb a echf

得出結論:a是樹根,a有左子樹和右子樹,左子樹有bdg結點,右子樹有cefh結點.

先序:bdg --> b dg

中序:dgb --> dg b

得出結論:b是左子樹的根結點,b無右子樹,有左子樹.

先序:dg --> d g

中序:dg --> d g

得出結論:d是b的左子樹的根結點,d無左子樹,有右子樹.

先序:cefh --> c e fh

中序:echf --> e c hf

得出結論:c是右子樹的根結點,c有左子樹(只有e結點),有右子樹(有fh結點).

先序:fh --> f h

中序:hf --> h f

得出結論:f是c的左子樹的根結點,f有左子樹(只有h結點),無右子樹.

還原二叉樹為:

ab c

d e f

g h後序遍歷序列:gdbehfca

根據前序遍歷和中序遍歷得出後序遍歷

首先要明確前序,中序和後序的遍歷順序 前序 父節點,左子節點,右子節點 中序 左子節點,父節點,右子節點 後序 左子節點,右子結點,父節點 明確之後,首先根據前序遍歷,確定整個二叉樹的根節點 前序的第乙個節點 再通過中序遍歷,可以直接根據根節點將整個二叉樹分為左右兩顆子樹.這時再逐步根據前序和中序順...

C 根據 前序 中序遍歷輸出後序遍歷

include include void printt char pred,int pre start,int pre end,char inod,int in start,int in end intmain void printt char pred,int pre start,int pre ...

根據前序遍歷序列和中序遍歷序列重建二叉樹

題目描述 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。程式設計思路 1.先求出根節點 前序序列第乙個元素 2.將根節點帶入到中序遍歷序列中求出左右子樹的中序遍歷序列。3.通過左...