二叉樹遍歷
1.前序遍歷(Pre-order Traversal)
①讀取當前樹根結點
②若存在左子樹,對左子樹執行①②③
③若存在右子樹,對右子樹執行①②③
2.中序遍歷(In-order Traversal)
①若存在左子樹,對左子樹執行①②③
②讀取當前樹根結點
③若存在右子樹,對右子樹執行①②③
3.后序遍歷(Post-order Traversal)
①若存在左子樹,對左子樹執行①②③
②若存在右子樹,對右子樹執行①②③
③讀取當前樹根結點。
逆推重建二叉樹
前序遍歷序列+中序遍歷序列
- 獲取前序遍歷序列第一個元素A,該元素是二叉樹根結點中保存的關鍵字。
- 憑借該元素查找中序遍歷序列,A左側的元素(GDBHEI)既是原二叉樹中A所在結點左子樹保存的關鍵字,A右側的元素(FC)既是原二叉樹中A所在結點右子樹保存的關鍵字。
- 對使用A從中序遍歷序列中划分出來的左右兩部分子序列,執行上述過程,直到所有元素的在原二叉樹中的位置確認。
后續遍歷序列+中序遍歷序列
- 獲取后序遍歷序列最后一個元素A,該元素是二叉樹根結點中保存的關鍵字。
- 憑借該元素查找中序遍歷序列,A左側的元素(GDBHEI)既是原二叉樹中A所在結點左子樹保存的關鍵字,A右側的元素(FC)既是原二叉樹中A所在結點右子樹保存的關鍵字。
- 對使用A從中序遍歷序列中划分出來的左右兩部分子序列,執行上述過程,直到所有元素的在原二叉樹中的位置確認。
前序遍歷序列+后序遍歷序列(×)
從前面兩種逆推過程可以看出,前序遍歷序列和后序遍歷序列的作用主要是確定子樹根結點元素,結點左右子樹包含哪些元素需要借助中序遍歷序列才能知道。所以,前序遍歷序列+后序遍歷序列無法逆推出原二叉樹。