資料結構與演算法

對空的二元搜尋樹依序插入 1, 2, 3, …, 1000(不做平衡的操作)。在這棵樹中尋找1000時,從根部開始比較,到找到為止要比較幾個節點?

  1. A10
  2. B500
  3. C1,000
查看答案與解析

正確答案:C. 1,000

依升冪插入時,新的值每次都成為之前最大值的右子節點,因此樹會變成只往右延伸的一條鏈(高度999)。1000位於最底部,因此要與 1, 2, …, 1000 共1,000個節點比較,與從開頭走訪鏈結串列相同,為 O(n)。若是平衡的樹,層數只有約 log₂ 1000 ≈ 10,因此使用 AVL 樹或紅黑樹這類在每次插入與刪除時調整形狀的平衡二元搜尋樹,最差也能維持 O(log n)。

  • A. 若是平衡的樹約需10次,但這棵樹已變成一條鏈。
  • B. 這接近尋找中間位置的值的次數,但1000位於末端。
  • C. 正確。樹變成一條鏈,尋找1000要與所有節點比較。
練習這個領域 前往領域頁面

相關計算工具

資料結構與演算法的其他題目

  1. 資料庫與檔案系統的索引常使用 B 樹(包含 B+ 樹)而非二元搜尋樹,其主要原因為下列何者?
  2. 像頂點約100萬個、邊約300萬條的道路網這樣,邊數相對於頂點數很少的(稀疏)圖,適合以下列何種方式存放在記憶體中?
  3. 在邊沒有權重的圖中,想求出從起點到各頂點的最少邊數。適合的搜尋方法與所使用的資料結構組合為下列何者?
  4. 在無向圖中,各頂點的相鄰頂點如下:A: B, C / B: A, D, E / C: A, F / D: B / E: B, F / F: C, E。從頂點 A 進行遞迴的深度優先搜尋。相鄰頂點依此處列出的順序檢查,一找到尚未拜訪的頂點就立刻前往。拜訪頂點的順序為下列何者?
  5. 在無向圖中,各邊的權重(距離)為 S−A: 4、S−B: 1、A−B: 2、A−C: 1、B−C: 5、C−T: 3、A−T: 6。以戴克斯特拉演算法求從 S 到 T 的最短路徑時,路徑與長度為下列何者?