time limit: 1000ms
memory limit: 65536kb
submit
statistic
problem description
給定一棵二叉樹的先序遍歷序列和中序遍歷序列,要求計算該二叉樹的高度。
input
輸入資料有多組,每組資料第一行輸入
1個正整數
n(1 <= n <= 50)
為樹中結點總數,隨後
2行先後給出先序和中序遍歷序列,均是長度為
n的不包含重複英文本母
(區分大小寫
)的字串。
output
輸出乙個整數,即該二叉樹的高度。
example input
9abdfghiec
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 ...