輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。
/*** definition for binary tree
* public class treenode
* }*/public class solution
private treenode reconstructbinarytreecore(int pretree,int startpre,int endpre,
intintree,int startin,int endin)
}//2 從中序遍歷得到根結點位置(從而確定左右子樹長度)
int rootindexofintree=startin;
while(rootindexofintree<=endin && intree[rootindexofintree]!=rootval)
rootindexofintree++;
if(rootindexofintree==endin && intree[rootindexofintree]!=rootval)
return null;
//計算左子樹長度
int lenofleftsubtree=rootindexofintree-startin;
//根據左子樹的長度計算前序遍歷結果中左子樹的最後乙個結點的下標
int lastindexofleftsubtree=startpre+lenofleftsubtree;
//重建左子樹
if(lenofleftsubtree>0)
root.left=reconstructbinarytreecore(pretree,startpre+1,lastindexofleftsubtree,
intree,startin,rootindexofintree-1);
//重建右子樹
if(lenofleftsubtree
1 重建二叉樹
主要思路 1 先判斷那些不滿足的條件以及只有乙個結點的情況 2 根節點 是前序遍歷的第乙個值 3 在中序遍歷中找到根節點的位置,記為pos root of in 以中序遍歷中根節點的位置為參考,切丁左右子樹的範圍 4 然後分為左子樹 右子樹,將左子樹入棧 容器,右子樹入棧或者容器 vectorpre...
二叉樹24 重建二叉樹
題目 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。思路 已知一棵樹的先序遍歷的結果陣列和中序遍歷的結果,要求據此重建一棵二叉樹,即重建所有結點並設定結點之間的指標關係,最後返回...
二叉樹 2255 重建二叉樹
總時間限制 1000ms 記憶體限制 65536kb 描述給定一棵二叉樹的前序遍歷和中序遍歷的結果,求其後序遍歷。輸入輸入可能有多組,以eof結束。每組輸入包含兩個字串,分別為樹的前序遍歷和中序遍歷。每個字串中只包含大寫字母且互不重複。輸出對於每組輸入,用一行來輸出它後序遍歷結果。樣例輸入 dbac...