3 9 重建二叉樹

2021-07-02 06:51:45 字數 539 閱讀 5645

題目:給定一顆樹的先序遍歷結果和中序遍歷的結果,重建這顆樹。

例如:前序: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 重建二叉樹

題目 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。思路 已知一棵樹的先序遍歷的結果陣列和中序遍歷的結果,要求據此重建一棵二叉樹,即重建所有結點並設定結點之間的指標關係,最後返回...