題目1385 重建二叉樹

2021-06-22 17:41:29 字數 996 閱讀 9695

題目描述:輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並輸出它的後序遍歷序列。

輸入:輸入可能包含多個測試樣例,對於每個測試案例,

輸入的第一行為乙個整數n(1<=n<=1000):代表二叉樹的節點個數。

輸入的第二行包括n個整數(其中每個元素a的範圍為(1<=a<=1000)):代表二叉樹的前序遍歷序列。

輸入的第三行包括n個整數(其中每個元素a的範圍為(1<=a<=1000)):代表二叉樹的中序遍歷序列。

輸出:對應每個測試案例,輸出一行:

如果題目中所給的前序和中序遍歷序列能構成一棵二叉樹,則輸出n個整數,代表二叉樹的後序遍歷序列,每個元素後面都有空格。

如果題目中所給的前序和中序遍歷序列不能構成一棵二叉樹,則輸出」no」。

**:

#include#include#includetypedef struct treenode

node;

//通過前序和中序構建二叉樹

node* buildtree(int *pre,int *in,int length)

}if(rootindex == -1)

return null;

node->left = buildtree(pre+1,in,rootindex);//left

node->right = buildtree(pre+1+rootindex,in+1+rootindex,length-rootindex-1);//right

return node;}

//後序遍歷

void print(node *root)}

int count(node *root)

return n;

}int main()

}

參考:

題目1385 重建二叉樹

資料結構題,必須知道中序才能確定樹,然後遞迴就行了。模擬過程如下 先序 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 ...

題目2 重建二叉樹

題目 題目描述 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並輸出它的後序遍歷序列。輸入 輸入可能包含多個測試樣例,對於每個測試案例,輸入的第一行為乙個整數n 1 n 1000 代表二...

NYOJ 題目756 重建二叉樹

時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 題目很簡單,給你一棵二叉樹的後序和中序序列,求出它的前序序列 so easy 輸入輸入有多組資料 少於100組 以檔案結尾結束。每組資料僅一行,包括兩個字串,中間用空格隔開,分別表示二叉樹的後序和中序序列 字串長度小於26,輸入...