二叉樹的前序,中序,後序遍歷筆記

2021-10-22 16:09:44 字數 2172 閱讀 1761

一顆二叉樹由根節點,左子樹和右子樹三部分組成,如果用d、l、r 分別代表遍歷根結點、遍歷左子樹、遍歷右子樹,那麼二叉樹的遍歷方式有 6 種:dlr、drl、ldr、lrd、rdl、rld。由於先遍歷左子樹和先遍歷右子樹在演算法設計上沒有本質區別,所以,只討論三種方式:

d代表根,注意d的位置

dlr — 根在前 — 前序遍歷(-----根左右-----從左往右,一棵樹的根永遠在左子樹前面,左子樹又永遠在右子樹前面 )

ldr — 根在中 — 中序遍歷(-----左根右-----從左往右,一棵樹的左子樹永遠在根前面,根永遠在右子樹前面)

lrd— 根在後 — 後序遍歷(-----左右根-----從左往右,一棵樹的左子樹永遠在右子樹前面,右子樹永遠在根前面)

1.啊!記得是走到乙個節點,不要只看節點,要把這個節點當成,然後把這個節點以及其左右兒子當成乙個整體來看,根據口訣(根左右,左根右,左右根),再決定怎麼走。

不多說,上例子:

前序遍歷

1.根a開始,a及左右兒子bc看成整體,前序口訣根左右, a→b 走了一步,回去看下記記記走到乙個節點,不要只看節點,要把這個節點當成,然後把這個節點以及其左右兒子當成乙個整體來看。)

2.走到b了,b及左右兒子de看成整體,我擦b有兒子de,所以b從a的左兒子公升級成de的根,前序口訣根左右,因為是根了,所以沒走藍2箭頭【b(左)→c(右)】,而是走綠2,【b(根)→d(左)】 a→b→d

3.走到d了,d及左右兒子fg看成整體,同2理,沒走藍3(d→e),走了綠3(d→f) a→b→d→f

4.走到f了,沒有兒子,只能看成d的左,前序口訣根左右,所以走綠4【f(左)→g(右)】

看圖分析: 根a開始,看abc,口訣左根右,所以開始不是a,是b,看bde,口訣左根右,所以開始不是b,是d,看dfg,口訣左根右,所以開始不是d,是f,f作為根無左右,所以確定,是f開始

記得兩句話:

1.走到乙個節點,不要只看節點,要把這個節點當成,然後把這個節點以及其左右兒子當成乙個整體來看。

2.中序口訣左根右

(1看整體,2用口訣)

1 f(左)→d(根)

2 第二步本應該是藍2【根d到右g】,但是,g整體看是ghi,中序口訣左根右,所以應該是先走綠2【d→h】

3 h不是根,只能是左,然後走【根g】,再走【右i】

…舉一反三,直接上圖自己悟:

謹記:1.走一步整體,再決定怎麼走

2.後序口訣左右根

謝謝!前序遍歷這樣描述是為了不懂的夥伴更快理解。如果有猛男靚女覺得有不妥的,還請手下留情!!!

二叉樹遍歷(前序,中序,後序

二叉樹的遍歷有三種方式,如下 1 前序遍歷 dlr 首先訪問根結點,然後遍歷左子樹,最後遍歷右子樹。簡記根 左 右。2 中序遍歷 ldr 首先遍歷左子樹,然後訪問根結點,最後遍歷右子樹。簡記左 根 右。3 後序遍歷 lrd 首先遍歷左子樹,然後遍歷右子樹,最後訪問根結點。簡記左 右 根。例1 如上圖...

二叉樹的遍歷 前序 中序 後序

include includetypedef struct bintree treenode,b tree b tree root null 函式的宣告 b tree creat tree int n void print1 void preorder b tree pointer 前序遍歷 voi...

二叉樹的前序 中序 後序遍歷

樹形結構是一類重要的非線性資料結構,其中以樹和二叉樹最為常用。二叉樹是每個結點最多有兩個子樹的有序樹。通常子樹的根被稱作 左子樹 left subtree 和 右子樹 right subtree 二叉樹常被用作二叉查詢樹和二叉堆或是二叉排序樹。二叉樹的每個結點至多只有二棵子樹 不存在度大於2的結點 ...