二叉樹遍歷解析

2021-07-26 18:40:21 字數 1333 閱讀 6319

今天來總結下二叉樹前序、中序、後序遍歷相互求法,即如果知道兩個的遍歷,如何求第三種遍歷方法,畫出來二叉樹,然後根據各種遍歷不同的特性來求,下面我們分別說明。

首先,我們看看前序、中序、後序遍歷的特性: 

前序遍歷: 訪問順序:根》左子樹》右子樹 

中序遍歷: 訪問順序:左

>

右子樹 

後序遍歷: 訪問順序:左

右根1、已知前序、中序遍歷,求後序遍歷

例:前序遍歷:gdafemhz

中序遍歷:adefghmz

步驟:第一步,根據前序遍歷的特點,我們知道根結點為g

第二步,觀察中序遍歷adefghmz。其中root節點g左側的adef必然是root的左子樹,g右側的hmz必然是root的右子樹。

第三步,觀察左子樹adef,左子樹的中的根節點必然是大樹的root的左子節點。在前序遍歷中,大樹的root的左子節點位於root之後,所以左子樹的根節點為d。

第四步,同樣的道理,root的右子樹節點hmz中的根節點也可以通過前序遍歷求得。在前序遍歷中,一定是先把root和root的所有左子樹節點遍歷完之後才會遍歷右子樹,並且遍歷的左子樹的第乙個節點就是左子樹的根節點。同理,遍歷的右子樹的第乙個節點就是右子樹的根節點。

第五步,觀察發現,上面的過程是遞迴的。先找到當前樹的根節點,然後劃分為左子樹,右子樹,然後進入左子樹重複上面的過程,然後進入右子樹重複上面的過程。最後就可以還原一棵樹了。

二、已知中序和後序遍歷,求前序遍歷

依然是上面的題,這次我們只給出中序和後序遍歷:

中序遍歷:       adefghmz

後序遍歷:       aefdhzmg

步驟:第一步,根據後序遍歷的特點,我們知道後序遍歷最後乙個結點即為根結點,即根結點為g。

第二步,觀察中序遍歷adefghmz。其中root節點g左側的adef必然是root的左子樹,g右側的hmz必然是root的右子樹。

第三步,觀察左子樹adef,左子樹的中的根節點必然是大樹的root的左子節點。在前序遍歷中,大樹的root的左子節點位於root之後,所以左子樹的根節點為d。

第四步,同樣的道理,root的右子樹節點hmz中的根節點也可以通過前序遍歷求得。在前後序遍歷中,一定是先把root和root的所有左子樹節點遍歷完之後才會遍歷右子樹,並且遍歷的左子樹的第乙個節點就是左子樹的根節點。同理,遍歷的右子樹的第乙個節點就是右子樹的根節點。

第五步,觀察發現,上面的過程是遞迴的。先找到當前樹的根節點,然後劃分為左子樹,右子樹,然後進入左子樹重複上面的過程,然後進入右子樹重複上面的過程。最後就可以還原一棵樹了。

構建二叉樹 遍歷二叉樹

陣列法構建二叉樹 public class main public static void main string args 用陣列的方式構建二叉樹 public static void createbintree 把linkedlist集合轉成二叉樹的形式 for int j 0 j 最後乙個父節...

二叉樹遍歷

二叉樹的遍歷非常重要,但對已一棵比較複雜的樹,要寫出它的先 中 後序遍歷,往往不是那麼簡單,也很容易犯錯。這裡介紹一種比較直觀且不容易犯錯的方法。對於圖1所示的二叉樹,要寫出它的先 中 後序遍歷,往往很容易出錯。圖 1 其實,我們可以用圖2中的紅線描畫出二叉樹的輪廓。圖 2 而對於樹上的每乙個節點,...

二叉樹遍歷

描述 華為實習生招聘,有一道類似如下的題目 給出二叉樹,如圖1所示 圖 1 二叉樹 要求給出中序遍歷的結果。下面分別就前序遍歷 中序遍歷 後序遍歷進行分析。規律 前序遍歷 根在前 子樹在根後且左子樹比右子樹靠前 中序遍歷 根在中 左子樹在根左邊,右子樹在根右邊 後序遍歷 根在後 子樹在根前且左子樹比...