通過前序遍歷、中序遍歷、后序遍歷的結果,逆推二叉樹。


二叉樹遍歷

1.前序遍歷(Pre-order Traversal)

①讀取當前樹根結點
②若存在左子樹,對左子樹執行①②③
③若存在右子樹,對右子樹執行①②③

2.中序遍歷(In-order Traversal)

①若存在左子樹,對左子樹執行①②③
②讀取當前樹根結點
③若存在右子樹,對右子樹執行①②③

3.后序遍歷(Post-order Traversal)

①若存在左子樹,對左子樹執行①②③
②若存在右子樹,對右子樹執行①②③
③讀取當前樹根結點。

逆推重建二叉樹

前序遍歷序列+中序遍歷序列

  1. 獲取前序遍歷序列第一個元素A,該元素是二叉樹根結點中保存的關鍵字。
  2. 憑借該元素查找中序遍歷序列,A左側的元素(GDBHEI)既是原二叉樹中A所在結點左子樹保存的關鍵字,A右側的元素(FC)既是原二叉樹中A所在結點右子樹保存的關鍵字。
  3. 對使用A從中序遍歷序列中划分出來的左右兩部分子序列,執行上述過程,直到所有元素的在原二叉樹中的位置確認。

后續遍歷序列+中序遍歷序列

  1. 獲取后序遍歷序列最后一個元素A,該元素是二叉樹根結點中保存的關鍵字。
  2. 憑借該元素查找中序遍歷序列,A左側的元素(GDBHEI)既是原二叉樹中A所在結點左子樹保存的關鍵字,A右側的元素(FC)既是原二叉樹中A所在結點右子樹保存的關鍵字。
  3. 對使用A從中序遍歷序列中划分出來的左右兩部分子序列,執行上述過程,直到所有元素的在原二叉樹中的位置確認。

前序遍歷序列+后序遍歷序列(×)

從前面兩種逆推過程可以看出,前序遍歷序列和后序遍歷序列的作用主要是確定子樹根結點元素,結點左右子樹包含哪些元素需要借助中序遍歷序列才能知道。所以,前序遍歷序列+后序遍歷序列無法逆推出原二叉樹。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM