前序中序和中序後序還原二叉樹

2021-08-22 11:42:09 字數 597 閱讀 5911

前序中序還原二叉樹:

struct node *creat(int len,char *str1,char *str2) //由先序序列和中序序列建立二叉樹

root->lchild=creat(i,str1+1,str2); //建立左子樹

root->rchild=creat(len-i-1,str1+i+1,str2+i+1); //建立右子樹

return root;

}

中序後序還原二叉樹:

struct node *creat(int

len,char *str2,char *str1)

root->lchild=creat(i,str2,str1);

root->rchild=creat(len-i-1,str2+i+1,str1+i);

return root;

}

總結:對函式設定3個變數len,str1,str2(len,str2,str1)分別儲存序列長度,第乙個序列首位址,第二個序列首位址。函式中找到根節點位置用i儲存,最後通過遞迴建立左右子樹(注意:函式變數中左右子樹的位址為第乙個字母的位址!)

根據前序 中序 後序遍歷還原二叉樹

參考 首先我們得知道概念 前序遍歷 先訪問當前節點,再訪問當前節點的左子樹,最後訪問當前節點的右子樹。對於二叉樹,深度遍歷與此同。規律 根在前 子樹在根後且左子樹比右子樹靠前,且第乙個就是根節點 中序遍歷 先訪問當前節點的左子樹,然後訪問當前節點,最後是當前節點的右子樹,二叉樹,中序遍歷會得到資料公...

二叉樹的前序中序,中序後序建樹

tree creat1 int len,char s1,char s2 長度 s1起始點位址 s2起始點位址 a bdfghie c t data s1 0 fdhgibe a c t l creat1 i,s1 1,s2 s1 1將先序第乙個根節點空過去 t r creat1 len i 1,s1...

二叉樹的重構 前序 後序 中序還原二叉樹

只要知道前序 後序 中序就可以還原二叉樹。前序 中序 preorder gdafemhz inorder adefghmz 通過前序我們可以找到根節點為g,之後在中序中我們中序遍歷的特性找到g的左子樹adef和右子樹mhz。之後在通過前序找到左子樹的根節點d,那麼左子樹的左子樹為a,左子樹的右子樹為...