看懂二叉樹的三種遍歷

2021-08-16 22:15:47 字數 1002 閱讀 5159

二叉樹的遍歷分為以下三種:

先序遍歷:遍歷順序規則為【根左右】

中序遍歷:遍歷順序規則為【左根右】

後序遍歷:遍歷順序規則為【左右根】

什麼是【根左右】?就是先遍歷根,再遍歷左孩子,最後遍歷右孩子;

舉個例子,看下圖(圖從網上找的):

先序遍歷:abcdefghk

中序遍歷:bdcaehgkf

後序遍歷:dcbhkgfea

以中序遍歷為例:

中序遍歷的規則是【左根右】,我們從root節點a看起;

此時a是根節點,遍歷a的左子樹;

a的左子樹存在,找到b,此時b看做根節點,遍歷b的左子樹;

b的左子樹不存在,返回b,根據【左根右】的遍歷規則,記錄b,遍歷b的右子樹;

b的右子樹存在,找到c,此時c看做根節點,遍歷c的左子樹;

c的左子樹存在,找到d,由於d是葉子節點,無左子樹,記錄d,無右子樹,返回c,根據【左根右】的遍歷規則,記錄c,遍歷c的右子樹;

c的右子樹不存在,返回b,b的右子樹遍歷完,返回a;

至此,a的左子樹遍歷完畢,根據【左根右】的遍歷規則,記錄a,遍歷a的右子樹;

a的右子樹存在,找到e,此時e看做根節點,遍歷e的左子樹;

e的左子樹不存在,返回e,根據【左根右】的遍歷規則,記錄e,遍歷e的右子樹;

e的右子樹存在,找到f,此時f看做根節點,遍歷f的左子樹;

f的左子樹存在,找到g,此時g看做根節點,遍歷g的左子樹;

g的左子樹存在,找到h,由於h是葉子節點,無左子樹,記錄h,無右子樹,返回g,根據【左根右】的遍歷規則,記錄g,遍歷g的右子樹;

g的右子樹存在,找到k,由於k是葉子節點,無左子樹,記錄k,無右子樹,返回g,根據【左根右】的遍歷規則,記錄f,遍歷f的右子樹;

f的右子樹不存在,返回f,e的右子樹遍歷完畢,返回a;

至此,a的右子樹也遍歷完畢;

二叉樹的三種遍歷

重新又看了一遍二叉樹 binary tree 發現很多東西自己還沒有弄明白,原來三種遍歷方式還不是自己想象中的那樣 前序遍歷 preorder 是先輸出自己,然後左,最後右。中序遍歷 inorder 是先左,再輸出自己,最後右。後序遍歷 postorder 是先左,再右,最後輸出自己。所謂的xx遍歷...

二叉樹的三種遍歷

在這裡說一下二叉樹的三種遍歷 前序,中序,後序 正文 前序遍歷 是指先從根開始,再依次找尋左子結點 右子結點。學習時的經驗就是 看圖學習 第乙份圖 這樣看來 1.先找最基本的根結點 詞窮 這裡是a。2.接著找以a為根結點的左子結點,這裡是b。3.而以b為根結點也會出現左右結點,這就又有了乙個左結點d...

二叉樹的三種遍歷

二叉樹是n n 0 個節點的有限集合,它或者是空樹 n 0 或者是有乙個根節點及兩顆不相交的且分別稱為左 右子樹的二叉樹所組成。可見,二叉樹同樣具有遞迴性質。特別需要注意的是,儘管樹和二叉樹的概念之間有許多聯絡,但它們是兩個不同的概念,樹和二叉樹之間最主要的區別是 二叉樹結點的子樹要區分左子樹和右子...