題目1385 重建二叉樹

2021-06-28 13:44:14 字數 825 閱讀 5947

資料結構題,必須知道中序才能確定樹,然後遞迴就行了。模擬過程如下;

先序:1 2 4 7 3 5 6 8

中序:4 7 2 1 5 3 8 6

先序為1,即根為1,到中序中找到1的位置,然後1左邊的為左子樹,右邊的為右子樹

分為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,輸入...