題目描述:
若某二叉樹的前遍歷訪問順序是序abdgcefh,中序遍歷順序是dgbaechf,則後序遍歷的訪問順序是什麼。若某二叉樹的前遍歷訪問順序是序abdgcefh,中序遍歷順序是dgbaechf,則後序遍歷的訪問順序是什麼。
分析:首先要明確乙個基礎的問題,前序遍歷的順序是:根、左、右;中序遍歷的順序是:左、根、右;後序遍歷的順序是:左、右、根。所以這裡的前中後都是指的根的位置。
就說上面這棵二叉樹的遍歷結果吧:
前序:abdgcefh
中序:dgbaecfh
後序:gdbehfca
如何分析前序中序後序的結果的方法就比較容易了吧,每個人或許有自己的方法,呵呵,我的方法得益於高手指導。這不是本題的難點,本題問題在於如何根據給定的前序中序結果畫出二叉樹,從而來確定後序的問題。
分析過程如下:
(1)前序順序為根左右,根據前序知道:a為根節點,然後觀察a在中序遍歷中的結果得到:dgb為a的左子樹的中序遍歷結果,echf為a的右子數的中序遍歷結果。
(2)緊接著上面的分析,回到前序遍歷來觀察dgb(左子數的中序)對應的前序為:bdg,所以左子數的根節點為b,同樣的道理,回到中序結果dgb,知道dg為左子樹,b沒有右子樹。依照這種規律分析下去,可以完整的分析出這棵樹的結構,然後就可以得到後序結果了。
仔細回顧一下,這題並不難,但是,由於沒有真正思考過這個題的思路,於是,考試的時候依然是不會,所以,考試(筆試就是考試)重要的是要多做題,多積累往年試題。
繼續探索,加油!
已知二叉樹的前序和中序,求後序
以前在學習資料結構的時候,經常會有一道選擇題,已知二叉樹的前序和中序遍歷,求二叉樹的後序遍歷。後來想到用程式設計的方法來實現它,限於水平有限,一直無從下手。後來,受另乙個問題啟發,才想出其解法 include include include typedef struct btree btree en...
已知二叉樹的中序和後序求前序
例子,後序遍歷為 gbdehfca,中序遍歷為 dgbaechf 後序遍歷中的最後乙個元素是根節點,a,然後查詢中序中a的位置 把中序遍歷分成 dgba echf,而因為節點個數要對應 後序遍歷分為 gbd ehfc a,gbd為左子樹,ehfc為右子樹,這樣又可以遞迴計算了 最後形成的二叉樹如下所...
已知二叉樹前序和中序求後序
設某二叉樹 前序遍歷為 abcdefghi 中序遍歷為 bcaedghfi 求該二叉樹的後序遍歷?因為二叉樹前序遍歷為 abcdefghi,所以這棵樹的根結點為 又因為中序遍歷為 bcaedghfi,所以這棵樹的左子樹為bc,右子樹為edghfi 現在先看左子樹中序遍歷 bc,由前序遍歷abcdef...