資料結構題,必須知道中序才能確定樹,然後遞迴就行了。模擬過程如下;
先序:1 2 4 7 3 5 6 8先序為1,即根為1,到中序中找到1的位置,然後1左邊的為左子樹,右邊的為右子樹中序:4 7 2 1 5 3 8 6
分為2部分:
先序:2 4 7 中序 :7 2 4
先序:3 5 6 8 中序:5 3 8 6
重複前面的步驟,構建樹。
而列印樹的過程,把根的輸出放在遞迴前為先序,放在中間位中序,放最後為後序,想想是不是醬紫的!!!
#include#includestruct node
};bool istree;
int n;
node *rebuilttree(int *pretree ,int *intree ,int n)
if(n == 1)
return new node(pretree[0]);
} int i;
for(i=0;ileft = rebuilttree(pretree+1,intree,i);
root->right = rebuilttree(pretree+1+i,intree+i+1,n-i-1);
return root;
}void printtree(node *tree)
}int main()
{ while(scanf("%d",&n) != eof)
{ int pretree[1111],intree[1111];
istree = 1;
node *tree;
for(int i=0;i
題目1385 重建二叉樹
題目描述 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並輸出它的後序遍歷序列。輸入 輸入可能包含多個測試樣例,對於每個測試案例,輸入的第一行為乙個整數n 1 n 1000 代表二叉樹的...
題目2 重建二叉樹
題目 題目描述 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並輸出它的後序遍歷序列。輸入 輸入可能包含多個測試樣例,對於每個測試案例,輸入的第一行為乙個整數n 1 n 1000 代表二...
NYOJ 題目756 重建二叉樹
時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 題目很簡單,給你一棵二叉樹的後序和中序序列,求出它的前序序列 so easy 輸入輸入有多組資料 少於100組 以檔案結尾結束。每組資料僅一行,包括兩個字串,中間用空格隔開,分別表示二叉樹的後序和中序序列 字串長度小於26,輸入...