通過講解呢我們會很明顯的感到這是乙個遞迴的問題。從乙個序列劃分成了兩個序列,然後各自再做劃分直到只有單個元素為止。那最簡單的實現思路就是遞迴了。
實現思路的講解在這裡,也是嗶哩嗶哩上的。
實現起來有個點要注意一下,那就是子樹的元素個數不論在什麼序列中都是相同的。在中序序列裡有10個元素,在前序遍歷裡也有10個。劃分好子樹序列也就劃分好了元素個數。
這個**是leetcode上的乙個例題,測試例應該不強,這樣就過了。
/**
* struct treenode
* };
**/treenode* buildtree(vector& preorder, vector& inorder)
前序遍歷和中序遍歷重建二叉樹
根據先序序列和中序序列的特點我們可以知道 1 先序的第乙個節點是根節點 2 在中序序列中,根結點前邊的結點都是左子樹中的,根結點右邊的結點都是右子樹中的 3 通過左右子樹的中序序列帶入前序序列可以求出左右子樹的前序序列 4 左右子樹的前序序列第乙個元素分別是根節點的左右孩子 5 可以遞迴上述步驟來重...
由前序遍歷和中序遍歷重建二叉樹
唯一的難點就是確定當前節點的左子樹的根節點和右子樹的根節點分別在前序遍歷陣列的位置。例如 先序遍歷陣列pre 1 2 3 4 5 6 7 中序遍歷陣列in 3 2 4 1 6 5 7 1是當前根節點,它在pre中的位置 pre start 0接著在in中找到1的位置,即分割點 j 3當前樹根所囊括的...
據前序遍歷和中序遍歷重建二叉樹
這是一道面試題 由前序遍歷和中序遍歷重建二叉樹 前序序列 1 2 3 4 5 6 中序序列 3 2 4 1 6 5 資料不含重複值 這個可以分析一下 前序遍歷序列 1 2 3 4 5 6 前序遍歷規則是根 左 右 中序遍歷序列 3 2 4 1 6 5 中序遍歷規則是左 根 右 由前序遍歷可知根節點為...