題目:給定一顆樹的先序遍歷結果和中序遍歷的結果,重建這顆樹。
例如:前序:ab d c e f
中序:d bae c f
a是根節點。
思路:根據前序,可以很快找出根節點a,然後根據中序,可以找出根節點a的左右子樹,然後遞迴求a的左子樹前序b d跟中序d b,a的右子樹前序c e f跟中序e c f即可
**:
struct pnode ;
void rebuild(char *ppreorder, char *pinorder, int treelength, pnode **proot)
int nleftlen = (int)(pleftend - pinorder); //記錄左子樹的長度
int nrightlen = treelength - nleftlen - 1; //記錄右子樹的長度
if(nleftlen > 0)
if(nrightlen > 0)
}
程式設計之美 3 9重建二叉樹
題目 給定一棵二叉樹,假定每個節點都用唯一的字元表示,具體結構如下 struct node 假設已經有了前序遍歷和中序遍歷結果,希望通過乙個演算法重建這棵樹。給定函式的定義如下 void rebuild char ppreorder,char pinorder,int ntreelen,node p...
程式設計之美 3 9 重建二叉樹
1.簡述 給定一棵二叉樹,假定每個節點都用唯一的字元表示,具體結構如下 struct node 假設已經有了前序遍歷和中序遍歷結果,希望通過乙個演算法重建這棵樹。給定函式的定義如下 void rebuild char ppreorder,char pinorder,intntreelen,node ...
二叉樹24 重建二叉樹
題目 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。思路 已知一棵樹的先序遍歷的結果陣列和中序遍歷的結果,要求據此重建一棵二叉樹,即重建所有結點並設定結點之間的指標關係,最後返回...