根據前序中序求後序

2021-07-08 17:04:59 字數 1003 閱讀 9756

如前序 為 abdecgf

中序 為 bdacgef

先 根據前序第乙個節點 把中序分為bd和cgef兩部分,a為根節點,a左邊為左子樹,右邊為右子樹。再把左右子樹分別做上述步驟。

以此類推 根據第二,第三...個節點構成二叉樹  a

b      e

d c f

g    b

再根據後序的性質得到dbgcbfea

知道後序中序 求前序類似。

知道後序前序,無法求得中序。

下面兩種都可以

node* getroot(int pre,int mid,int n)

#include #include #include using namespace std;

struct node

};void getroot(string s1,string s2,node* &n)

string new_s11,new_s12,new_s2,new_s3;

n->ch=s1[0];

int j=0;

for(j=0; j < len2; ++j)

j++;

for(; j < len2; ++j)

new_s3+=s2[j];

for(j=1; j < len1; ++j)

for(; j < len1; ++j)

new_s12+=s1[j];

//cout << new_s11+" 1" << endl << new_s12+" 1" << endl << new_s2+" 1" << endl << new_s3+" 1" << endl << endl;

getroot(new_s11,new_s2,n->left);

getroot(new_s12,new_s3,n->right);

}void pos_tra(node *n)

int main()

前序中序求後序 後序中序求前序層次 模板

這是資料結構的知識。剛開始先拒絕用指標去寫。當我把這個想法和別人分享是,別人說不喜歡用指標的程式設計師不是乙個好的c c 程式設計師。所以,就有了這麼勵志的時刻,我參考大牛的 自己用指標寫了個遍,直接1a 不用指標總是出現各種想不到的錯誤。心累。orz.include include include...

前序中序求後序

test fdxeag xdefag 涉及到二叉樹的問題最好不用動態申請,對記憶體的管理很麻煩 採用預分配的靜態陣列 本題目由前序和中序得到後序,方法 先構造二叉樹,再進行 include includestruct nodetree 50 char str1 50 str2 50 分別存放前序和中...

已知前序中序,求後序

思路 先序的遍歷規則為根 左 右,中序的遍歷規則為左 根 右,所以我們在中序中找到與a a必為根 相等的字元,則在中序中g d h b為a的左子樹,e i c j f為a的右子樹,在左子樹和右子樹中,重複前面過程,最後逆向將根列印出來,就是其後序。是乙個遞迴過程 include include us...