資料結構實驗之二叉樹四:還原二叉樹
time limit: 1000ms memory limit: 65536k 有疑問?點這裡^_^
題目描述
給定一棵二叉樹的先序遍歷序列和中序遍歷序列,要求計算該二叉樹的高度。
輸入輸入資料有多組,每組資料第一行輸入1個正整數n(1 <= n <= 50)為樹中結點總數,隨後2行先後給出先序和中序遍歷序列,均是長度為n的不包含重複英文本母(區分大小寫)的字串。
輸出輸出乙個整數,即該二叉樹的高度。
示例輸入
9 abdfghiec
fdhgibeac
示例輸出
思想:用歸納法來分析遞迴.
# include # include typedef struct node
node;
int n;
node * binarytreefromorderings(char *inorder,char *preorder,int length);
int depth(node*root);
int main()
return 0;
}node*binarytreefromorderings(char *inorder,char *preorder,int length)
node * root = (node*)malloc(sizeof(node));
root->data = *preorder;
int rootindex = 0;
for( ; rootindex < length; rootindex++)//在中序序列中找到根,來分開左右子樹
}root->l = binarytreefromorderings(inorder, preorder + 1, rootindex);
root->r = binarytreefromorderings(inorder+rootindex+1,preorder+rootindex + 1,length-(rootindex + 1));
return root;
}int depth(node*root)
int left = 1;
int right = 1;
left += depth(root->l);
right += depth(root->r);
return left > right ? left : right;
}
還原二叉樹
給定一棵二叉樹的先序遍歷序列和中序遍歷序列,要求計算該二叉樹的高度。輸入資料有多組,每組資料第一行輸入 1個正整數 n 1 n 50 為樹中結點總數,隨後 2行先後給出先序和中序遍歷序列,均是長度為 n的不包含重複英文本母 區分大小寫 的字串。輸出乙個整數,即該二叉樹的高度。9 abdfghiec ...
還原二叉樹
5 9 還原二叉樹 25分 給定一棵二叉樹的先序遍歷序列和中序遍歷序列,要求計算該二叉樹的高度。輸入首先給出正整數n le 50 為樹中結點總數。下面兩行先後給出先序和中序遍歷序列,均是長度為n的不包含重複英文本母 區別大小寫 的字串。輸出為乙個整數,即該二叉樹的高度。9 abdfghiec fdh...
二叉樹還原
已經前序遍歷 與 中序遍歷 的 結果,還原出二叉樹 1.前序遍歷的第乙個節點一定是二叉樹根節點 2.中序遍歷的結果中,根節點左側的資料一定是 根節點左子樹相關資料,右側一定是根節點右子樹相關資料 private static string pre private static string in 所...