7 2 還原二叉樹(25 分)

2021-08-17 10:00:42 字數 947 閱讀 3311

輸入首先給出正整數n(

≤50),為樹中結點總數。下面兩行先後給出先序和中序遍歷序列,均是長度為n的不包含重複英文本母(區別大小寫)的字串。

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

9

abdfghiec

fdhgibeac

5根據前序遍歷的特點, 知前序序列(presequence)的首個元素(presequence[0])為二叉樹的根(root),  然後在中序序列(insequence)中查詢此根(root),  根據中序遍歷特點, 知在查詢到的根(root) 前邊的序列為根的左子樹的中序遍歷序列,  後邊的序列為根的右子樹的中序遍歷序列。 設在中序遍歷序列(insequence)根前邊有left個元素. 則在前序序列

(presequence)

中, 緊跟著根(root)的left個元素序列(即presequence[1...left]) 為根的左子樹的前序遍歷序列, 在後邊的為根的右子樹的前序遍歷序列.而構造左子樹問題其實跟構造整個二叉樹問題一樣,只是此時前序序列為presequence[1...left]), 中序序列為insequence[0...left-1], 分別為原序列的子串, 構造右子樹同樣, 顯然可以用遞迴方法解決。

#include#include#includeusing namespace std;

char str1[110],str2[110];

int dfs(char a,char b,int m)

int i;

for(i=0;id?c:d;

}int main()

{ int n;

cin>>n;//節點個數

cin>>str1>>str2;

cout<

7 2 還原二叉樹(25 分)

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

還原二叉樹(25 分)

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

還原二叉樹(25 分)

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