二叉樹的遍歷是指從根節點出發,按照某種次序依次訪問二叉樹中所有結點,使得每個結點被訪問一次且僅被訪問一次。其中關鍵詞是訪問和次序。
二叉樹的遍歷方法
1.前序遍歷
規則:
若二叉樹爲空,則 空操作返回,否則先訪問根結點,然後前序遍歷左子樹,在前序遍歷右子樹。下圖的遍歷順序爲ABDGHCEIF。
規則:
若二叉樹爲空,則 空操作返回,否則先訪問根結點,然後前序遍歷左子樹,在前序遍歷右子樹。下圖的遍歷順序爲ABDGHCEIF。
2.中序遍歷
規則:
若樹爲空,則空操作返回,否則從根結點開始,中序遍歷根結點的左子樹,然後是訪問根結點,最後中序遍歷右子樹。下圖順序爲GDHBAEICF。
規則:
若樹爲空,則空操作返回,否則從根結點開始,中序遍歷根結點的左子樹,然後是訪問根結點,最後中序遍歷右子樹。下圖順序爲GDHBAEICF。
3.後序遍歷
規則:
若樹爲空,則空操作返回,否則從左到右先葉子後結點的方式遍歷訪問左右子樹,最後訪問根結點,下圖的順序爲GHDBIEFCA。
規則:
若樹爲空,則空操作返回,否則從左到右先葉子後結點的方式遍歷訪問左右子樹,最後訪問根結點,下圖的順序爲GHDBIEFCA。
4.層序遍歷
規則:
若樹爲空,則空操作返回,否則從樹的第一層,也就是根結點開始訪問,從上而下逐層遍歷,在同一層中,按從左到右的順序對結點進行訪問。下圖的順序爲ABCDEFGHI。
下面介紹算法和代碼演示:(代碼用遞歸的方式)
1.前序遍歷算法:
2.中序遍歷算法
已知前序遍歷序列和中序遍歷序列,可以唯一確定一顆二叉樹;
已知後序遍歷序列和中序遍歷序列,可以唯一確定一顆二叉樹;
我們將二叉樹中的每個結點的空指針引出一個虛結點,其值爲 特定值,比如“^”,下面我們建立二叉樹。