資料結構實驗之二叉樹四 還原二叉樹

2021-07-24 02:34:42 字數 1178 閱讀 7320

time limit: 1000ms

memory limit: 65536kb

submit

statistic

problem description

給定一棵二叉樹的先序遍歷序列和中序遍歷序列,要求計算該二叉樹的高度。

input

輸入資料有多組,每組資料第一行輸入

1個正整數

n(1 <= n <= 50)

為樹中結點總數,隨後

2行先後給出先序和中序遍歷序列,均是長度為

n的不包含重複英文本母

(區分大小寫

)的字串。

output

輸出乙個整數,即該二叉樹的高度。

example input

9 

abdfghiec

fdhgibeac

example output

5

思路:

給你先序和中序建樹。

首先你要明白的是

先序遍歷遍歷順序:根節點,左子樹,右子樹。

中序遍歷遍歷順序:左子樹,根節點,右子樹。

要想的出高度,可以先建樹,然後求出最深的葉子節點的深度即可。

建樹:1.因為先序遍歷先遍歷的是根節點,所以我們首先找到先序的第乙個字元,這個就是根節點。示例來說就是a。

2.然後在中序遍歷中找到這個根節點。那麼中序的左半部分就是左子樹了,右半部分就是右子樹惹。

3.遞迴相應的左子樹和右子樹即可。

注意:用乙個長度變數記錄當前樹的長度,用來結束遞迴。

#include #include #include #include using namespace std;

const int maxn=50+5;

int l;

char in[maxn],mid[maxn];

struct node

;struct node *creat()

;struct node*in_mid_build_tree(struct node *root,char *in,char *mid,int l)

;int get_high(struct node *root,int high)

int main()

return 0;

}

資料結構實驗之二叉樹四 還原二叉樹

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

資料結構實驗之二叉樹四 還原二叉樹

time limit 1000ms memory limit 65536k 有疑問?點這裡 給定一棵二叉樹的先序遍歷序列和中序遍歷序列,要求計算該二叉樹的高度。輸入資料有多組,每組資料第一行輸入 1個正整數 n 1 n 50 為樹中結點總數,隨後 2行先後給出先序和中序遍歷序列,均是長度為 n的不包...

資料結構實驗之二叉樹四 還原二叉樹

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