還原二叉樹

2021-07-24 10:38:37 字數 1190 閱讀 6498

5-9 還原二叉樹   (25分)

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

輸入首先給出正整數n(\le

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

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

9

abdfghiec

fdhgibeac

5

//遞迴實現

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

//char tree[100000];

int max=0;

void deal(char preorder,char inorder,int prestart,int preend,int instart,int inend,int treenow)

if(inorder[inend]==preorder[prestart])//處理右子樹 判斷是為了處理右子樹為空情況

return;

nextinend=inend;

for(nextinstart=instart;nextinstart<=inend&&inorder[nextinstart]!=preorder[prestart];nextinstart++);

nextinstart++;

nextprestart=prestart+count+1;

nextpreend=preend;

deal(preorder,inorder,nextprestart,nextpreend,nextinstart,nextinend,treenow*2+1);

return;

}int main()

coutstruct treenode

; treenode*findtree(char*in,char*pre,int length)

int length(treenode *node)

int main()

for(int i=0;i>c;

in[i]=c;

} treenode* node=new treenode;

node=findtree(in,pre,n);

cout<

還原二叉樹

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

還原二叉樹

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

二叉樹還原

已經前序遍歷 與 中序遍歷 的 結果,還原出二叉樹 1.前序遍歷的第乙個節點一定是二叉樹根節點 2.中序遍歷的結果中,根節點左側的資料一定是 根節點左子樹相關資料,右側一定是根節點右子樹相關資料 private static string pre private static string in 所...