HHUOJ 1916 還原二叉樹

2021-09-26 14:50:25 字數 1212 閱讀 1467

給一棵二叉樹的層序遍歷序列和中序遍歷序列,求這棵二叉樹的先序遍歷序列和後序遍歷序列。

每個輸入檔案中一組資料。

第一行乙個正整數n(1<=n<=30),代表二叉樹的結點個數(結點編號為1n)。接下來兩行,每行n個正整數,分別代表二叉樹的層序遍歷序列和中序遍歷序列。資料保證序列中1n的每個數出現且只出現一次。

輸出兩行,每行n個正整數,分別代表二叉樹的先序遍歷序列和後序遍歷序列。每行末尾不輸出額外的空格。

7

3 5 4 2 6 7 1

2 5 3 6 4 7 1

3 5 2 4 6 7 1

2 5 6 1 7 4 3

注意通過層序和中序重建二叉樹有點不同,具體看**:

#include

using namespace std;

typedef

long

long ll;

#define maxn 100

struct node

;char pre[maxn]

,in[maxn]

,layer[maxn]

;int n;

node*

create

(int layerl,

int layerr,

int inl,

int inr)

node* root=new node;

int i,j,flag;

for(i=

0;i<=

(layerr-layerl)

;i++)}

if(flag)

break;}

root->data=in[inl+j]

; root->lchild=

create

(layerl+i+

1,layerr,inl,inl+j-1)

; root->rchild=

create

(layerl+i+

1,layerr,inl+j+

1,inr)

;return root;

}void

preorder

(node*root)

void

postorder

(node*root)

intmain()

還原二叉樹

給定一棵二叉樹的先序遍歷序列和中序遍歷序列,要求計算該二叉樹的高度。輸入資料有多組,每組資料第一行輸入 1個正整數 n 1 n 50 為樹中結點總數,隨後 2行先後給出先序和中序遍歷序列,均是長度為 n的不包含重複英文本母 區分大小寫 的字串。輸出乙個整數,即該二叉樹的高度。9 abdfghiec ...

還原二叉樹

資料結構實驗之二叉樹四 還原二叉樹 time limit 1000ms memory limit 65536k 有疑問?點這裡 題目描述 給定一棵二叉樹的先序遍歷序列和中序遍歷序列,要求計算該二叉樹的高度。輸入輸入資料有多組,每組資料第一行輸入1個正整數n 1 n 50 為樹中結點總數,隨後2行先後...

還原二叉樹

5 9 還原二叉樹 25分 給定一棵二叉樹的先序遍歷序列和中序遍歷序列,要求計算該二叉樹的高度。輸入首先給出正整數n le 50 為樹中結點總數。下面兩行先後給出先序和中序遍歷序列,均是長度為n的不包含重複英文本母 區別大小寫 的字串。輸出為乙個整數,即該二叉樹的高度。9 abdfghiec fdh...