已知二叉樹前序中序,構造一課二叉樹

2021-08-19 21:14:41 字數 1024 閱讀 8297

#include#includeusing namespace std;

struct btnode ;

typedef struct btnode *btree;

int index = -1;

int pre = ;

int in = ;

//由前序與中序序列,一樣可以構造出一棵二叉樹的。

//引數解釋

/* btree &t:因為要對二叉樹進行寫入資料,對二叉樹有實際的物理改動,因此一定要加&,表示引用

root:表示前序序列的起始下標

start:表示中序序列的起始下標

end:表示中序序列的結束下標

*/void post(btree &t,int root,int start,int end)

index++;

t= (btree)malloc(sizeof(btnode));

int i = start;

while (i < end&&in[i]!=pre[root])i++;//查詢前序序列的節點在中序序列中的位置

//將中序序列分為左子樹和右子樹,進行遞迴。

t->value = pre[index];//直接將前序序列的值賦值給構造的二叉樹

//因為二叉樹的構造是從根節點開始構造,所以只能從前序序列中取值

//然後為其賦值(個人觀點,因為目前還沒有嘗試過有沒有其他的方法解決這個問題(^_^)(^_^))

//cout << t->value << " ";

post(t->left,root+1,start,i-1);//對左子樹進行遞迴

post(t->right,root+1+i-start, i + 1, end);//對右子樹進行遞迴

//coutif (t)

if (q->right != null)

} }}

//互動左右子樹

void binary_change(btree t)

}int main()

已知二叉樹前序和中序求後序

設某二叉樹 前序遍歷為 abcdefghi 中序遍歷為 bcaedghfi 求該二叉樹的後序遍歷?因為二叉樹前序遍歷為 abcdefghi,所以這棵樹的根結點為 又因為中序遍歷為 bcaedghfi,所以這棵樹的左子樹為bc,右子樹為edghfi 現在先看左子樹中序遍歷 bc,由前序遍歷abcdef...

還原二叉樹(前序 中序求二叉樹)

給定一棵二叉樹的先序遍歷序列和中序遍歷序列,要求計算該二叉樹的高度。輸入首先給出正整數n 50 為樹中結點總數。下面2行先後給出先序和中序遍歷序列,均是長度為n的不包含重複英文本母 區別大小寫 的字串。輸出為乙個整數,即該二叉樹的高度。此題為利用先序和中序來構造整顆二叉樹,關鍵在於利用先序序列 根左...

前序建立二叉樹 前序 中序 後序遍歷二叉樹

二叉樹的建立 如果要在記憶體中建立乙個如下左圖這樣的樹,wield 能讓每個結點確認是否有左右孩子,我們對它進行擴充套件,變成如下右圖的樣子,也就是將二叉樹中的每個結點的空指標引出乙個虛結點,其值為乙個特定值,比如 稱之為擴充套件二叉樹。擴充套件二叉樹就可以做到乙個遍歷序列確定一棵二叉樹了。如前序遍...