#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 能讓每個結點確認是否有左右孩子,我們對它進行擴充套件,變成如下右圖的樣子,也就是將二叉樹中的每個結點的空指標引出乙個虛結點,其值為乙個特定值,比如 稱之為擴充套件二叉樹。擴充套件二叉樹就可以做到乙個遍歷序列確定一棵二叉樹了。如前序遍...