二叉樹遍歷的淺顯解釋純乾貨

2021-10-24 11:05:52 字數 1174 閱讀 8202

首先觀察前中後序的排列方式

前中後序列的左右子樹的順序是不會改變的

唯一會改變的就是根節點的位置

ok回到前中後

前序就是根節點在前面(根左右)

中序就是根節點在中間(左根右)

後序就是根節點在末端(左右根)

例如給乙個二叉樹

觀察這個二叉樹

我們使用前序遍歷

根據我們剛才的根左右的順序來解答這個二叉樹

從左到右我們分別命上編號abc

觀察第乙個根節點

就是我們的首結點

根左右的順序來看這個二叉樹下面的部分我們先不看

只看上面前兩層

根據前序根左右我們可以得到abc

但是我們的b結點在他的子數裡面又是乙個根節點,所以這個地方我們再把b展開

b根據根結點的排序我們可以得到乙個新的就是

根左(根左右bde)右

即為我們將b替換為bde

現在我們的前序序列為a*bde*c

繼續展開我們的右邊的樹

即為c展開為cf根左右沒有左結點 使用我們的c變成cf序列

現在我們的所有結點全部排序完畢

我們得到了全部的結點為

abdecf

他們的遍歷**類似

我們可以簡潔的清晰記憶

此處我們用c語言描述一下

稍等補上

用遞迴遍歷

void preorder(bitree t)

}這個樹的中序遍歷也就是左根右的順序

同理我們進行一下遍歷

可能會對這個遍歷帶入一下就得到了

dbe沒錯你得到了左子樹得全部結點

繼續帶入(dbe)a(c)發現還少乙個結點

我們把c的子樹當成乙個新的子樹

空cf是不是得到了乙個右邊得結點

串聯起來就是

dbeacf

後序遍歷為

左右根debfca

乾貨8 二叉樹

ifndef btree h define btree h define bleft 0 表示插入二叉樹的左邊 define bright 1 表示插入二叉樹的右邊 define true 1 define false 0 typedef char btreedata 二叉樹的結點 typedef ...

二叉樹的遍歷 二叉樹遍歷與儲存

在資料結構中,二叉樹是非常重要的結構。例如 資料庫中經常用到b 樹結構。那麼資料庫是如何去單個查詢或者範圍查詢?首先得理解二叉樹的幾種遍歷順序 先序 中序 後序 層次遍歷。先序 根節點 左子樹 右子樹 中序 左子樹 根節點 右子樹 後序 左子樹 右子樹 根節點 按層級 class node if c...

構建二叉樹 遍歷二叉樹

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