由中序序列和後序序列確定一棵二叉樹

2022-05-03 12:24:27 字數 1022 閱讀 2973

中序序列

int hou[maxn];//

後序序列

struct

node

;int

n,m;

node* create(int houl,int hour,int inl,int

inr)

int numleft = i - inl;//

看左邊是否還有節點

//注意這裡沒有對numleft的數目進行判斷!!

root->lchild = create(houl,houl+numleft-1,inl,i-1

); root->rchild = create(houl+numleft,hour-1,i+1

,inr);

return

root;}//

inorder

void inorder(node* root)//

以中序序列輸出

void preorder(node* root)//

以先序序列輸出

void houorder(node* root)//

後序序列輸出

intmain()//8

//7 2 3 4 6 5 1 8 中序

//2 7 4 6 3 1 8 5 後序

//5 3 7 2 6 4 8 1 先序

由中序序列和後序序列得到先序序列

寫的有點繁瑣,這次來個簡潔點的。思路都是一樣的 給出一棵二叉樹的中序與後序排列。求出它的先序排列。約定樹結點用不同的大寫字母表示,長度 le 8 8 22行,均為大寫字母組成的字串,表示一棵二叉樹的中序與後序排列。11行,表示一棵二叉樹的先序。輸入 1複製 badc bdca輸出 1複製 abcd直...

由中序和後序(前序)序列求前序(後序)序列

已知二叉樹的中序和後序 前序 序列可以唯一確定一顆二叉樹,例如,中序序列 1 2 3 4 5 6 後序序列 3 4 2 6 5 1 可以唯一確定一顆二叉樹,如下圖 思路是這樣的 我們知道對於一顆二叉樹,根節點是後序遍歷序列的最後乙個,找到根節點後,我們由中序遍歷的特點知道,中序序列中,根節點 左邊的...

如何根據層序序列和中序序列建立一棵樹

參考該部落格 最近複習了樹方面的資料結構知識,在做題的過程中,我發現都是給先序 或者後序 與中序讓求一棵樹,沒有碰到過給你層序和中序讓求樹的情況,故在此做乙個整理以便於今後回顧複習。附有注釋的 include using namespace std const int maxn 110 int le...