二叉樹前中後序遍歷

2021-10-12 16:45:53 字數 758 閱讀 8813

前序遍歷a-b-d-f-g-h-i-e-c

中序遍歷f-d-h-g-i-b-e-a-c

後序遍歷f-h-i-g-d-e-b-c-a

前序(根左右),中序(左根右),後序(左右根)

已知某二叉樹的前序遍歷為a-b-d-f-g-h-i-e-c,中序遍歷為f-d-h-g-i-b-e-a-c,請還原這顆二叉樹。

思路:從前序遍歷中,我們確定了根結點為a,在從中序遍歷中得出 f-d-h-g-i-b-e在根結點的左邊,c在根結點的右邊,構建我們的二叉樹的雛形。

那麼剩下的前序遍歷為d-f-g-h-i,中序遍歷為f-d-h-g-i,d就是我們新的「根結點」,從中序遍歷中得出f在d的左邊,h-g-i在d的右邊,繼續構建

那麼剩下的前序遍歷為g-h-i,中序遍歷為h-g-i,g就是我們新的「根結點」,從中序遍歷中得出h在g的左邊,i在g的右邊,繼續構建

已知某二叉樹的中序遍歷為f-d-h-g-i-b-e-a-c,後序遍歷為f-h-i-g-d-e-b-c-a,請還原這顆二叉樹。

思路:從後序遍歷中,我們確定了根結點為a,在從中序遍歷中得出 f-d-h-g-i-b-e 在根結點的左邊,c在根結點的右邊,那麼我們就可以構建我們的二叉樹的雛形。之後就是新根節點b,fdhgi在根左,e在根右。在之後就是新根d,f根左,hgi根右,然後就差不多了。

和前序和中序還原二叉樹一樣,我們同理可以通過中序和後序還原二叉樹。

光有前序遍歷和後序遍歷是無法還原二叉樹的。

二叉樹前中後序遍歷

二叉樹 6.先序遍歷 10分 請編寫遞迴函式,實現二叉樹的先序遍歷。函式原型 先序遍歷 void bintreepreorder const tnode root 說明 root為二叉樹或子樹的根指標。在標頭檔案 bintree.h 新增函式宣告。bintree.h 先序遍歷 void bintre...

二叉樹前中後序遍歷相互求法

今天來總結下二叉樹前序 中序 後序遍歷相互求法,即如果知道兩個的遍歷,如何求第三種遍歷方法,比較笨的方法是畫出來二叉樹,然後根據各種遍歷不同的特性來求,也可以程式設計求出,下面我們分別說明。首先,我們看看前序 中序 後序遍歷的特性 前序遍歷 1.訪問根節點 2.前序遍歷左子樹 3.前序遍歷右子樹 中...

二叉樹前中後序遍歷迭代實現

二叉樹遍歷迭代實現 迭代用棧實現 遞迴的原理就是棧,每次呼叫乙個方法就會開闢乙個棧幀,而每個棧幀的返回順序也是按照後進先出的順序。所以基於這個原理,任何遞迴能解決的問題都可以轉換為迭代去實現。只需記住一點 棧是先進後出。前序是根 左 右,那麼棧的入棧順序是根 此時進行出棧操作並新增到結果 右 左 中...