P1827 【[USACO3.4]美國血統 American Heritage】 題解
阿新 • • 發佈:2021-11-13
原題連結: P1827 【美國血統 American Heritage】
題意簡述: 輸入一棵二叉樹的先序遍歷和中序遍歷序列,輸出後序遍歷序列。
前置知識: 二叉樹遍歷
定義: 所謂遍歷(\(Traversal\))是指沿著某條搜尋路線,依次對樹中每個結點均做一次且僅做一次訪問。訪問結點所做的操作依賴於具體的應用問題。 遍歷是二叉樹上最重要的運算之一,是二叉樹上進行其它運算之基礎。
實現:
前序遍歷(\(Preorder Traversal)\) | 中序遍歷(\(Inorder Traversal\)) | 後序遍歷(Postorder Traversal) | |
---|---|---|---|
\(step\) 1. | 訪問根結點 | 遍歷左子樹 | 遍歷左子樹 |
\(step\) 2. | 遍歷左子樹 | 訪問根結點 | 遍歷右子樹 |
\(step\) 3. | 遍歷右子樹 | 遍歷右子樹 | 訪問根結點 |
思路:邊建樹(遞迴)邊輸出。後序序列輸出時應該將輸出放在兩個遞迴函式後面,不難。不過還有些細節還是需要注意,比如傳參的時候左右子樹分別在先序和中序的位置需要注意。
\(end\)