資料結構的程式怎麼寫@@

  • 主題發起人 主題發起人 markcoco
  • 開始日期 開始日期

markcoco

初級會員
已加入
1/1/05
訊息
16
互動分數
0
點數
1
題目:「利用二元搜尋樹之前序走訪及中序走訪,重建該二元搜尋樹」

輸入: 為某二元搜尋樹之「前序走訪」。
處理: 依據輸入資料,重建該二元搜尋樹後,輸出該二元搜尋樹之後序走訪。
注意:因二元搜尋樹之中序走訪「必為由小排到大」,故不必輸入。
請特別注意:本題要求由程式自行將輸入資料排序,以取得該二元搜尋樹之「中序走訪」。
測試輸入資料: 7 4 3 2 1 5 6 9 8 (共9數字)


本程式若不使用「中序走訪」,可以不必將輸入資料排序來取得「中序走訪」。由上觀察可知,只要將輸入之「前序走訪」數列存入佇列QT中,以該「前序佇列QT」重建該二元搜尋樹之演算法可遞迴定義如下:

重建二元搜尋樹(用「前序佇列QT」)
{ 若 (佇列QT 為空佇列) 則 Return(NULL) 否則{
1、 自佇列QT取出第一數,造「樹根」節點Root;
2、 自佇列QT取出「左子樹」之「前序走訪」數列,造「前序佇列QL」;
二元搜尋樹LT = (遞迴呼叫)重建二元搜尋樹(用「前序佇列QL」);
將二元搜尋樹LT加入節點Root,成為節點Root之「左子樹」;
3、 自佇列QT取出「右子樹」之「前序走訪」數列,造「前序佇列QR」;
二元搜尋樹RT = (遞迴呼叫)重建二元搜尋樹(用「前序佇列QR」);
將二元搜尋樹RT加入節點Root,成為節點Root之「右子樹」;
4、 Return(節點Root之地址);