劍指offer 重建二叉樹

2021-08-02 05:27:21 字數 714 閱讀 5765

題目描述

輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。

思路:首先從前序和中序遍歷的規則出發,可以知道前序的第乙個值一定是根節點,而中序時,根節點位於陣列的中間。找到中序中根節點所在的位置後,其左邊為根的左子樹,右邊為右子樹。

其次,應該想到使用遞迴更加容易一些。因為最後必須重建二叉樹並返回根節點,普通的迴圈很能形成可操作的**(變數的動態建立就是乙個問題)。

遞迴思路的重點在於,每個節點都可以看成根節點,它的左右子樹同樣滿足遍歷順序得到的結果。

//前序遍歷和中序遍歷序列

private treenode reconstructbinarytree(int pre, int startpre, int endpre, int in, int startin, int endin) //endpre-endin+i+1,pre的左邊部分,寫成這樣更好懂一些,之前的寫法是把左子樹的部分跳過,即加上左子樹的節點個數然後得到右子樹的開端

return root;}}

劍指offer 重建二叉樹

重建二叉樹2.cpp 定義控制台應用程式的入口點。題目描述 輸入乙個二叉樹的前序遍歷和中序遍歷,輸出這顆二叉樹 思路 前序遍歷的第乙個節點一定是這個二叉樹的根節點,這個節點將二叉樹分為左右子樹兩個部分,然後進行遞迴求解 include stdafx.h include vector using na...

《劍指offer》重建二叉樹

輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如,則重建二叉樹並返回。輸入乙個樹的前序和中序,例如輸入前序遍歷序列和中序遍歷序列 根據輸入的前序和中序,重建乙個該二叉樹,並返回該樹的根節點。definition for binary...

劍指offer 重建二叉樹

題目描述 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。definition for binary tree struct treenode class solution if ...