民國109年 第2梯次 電腦軟體設計(C++)乙級 學科

第31題

對一個擁有n 個節點的二元樹(Binary Tree)進行搜尋某一個值x,在最壞情況下所需時間複雜度為 多少?

題目

對一個擁有n 個節點的二元樹(Binary Tree)進行搜尋某一個值x,在最壞情況下所需時間複雜度為 多少?

  1. (1) θ(1)
  2. (2) θ(log n)
  3. (3) θ(n log n)
  4. (4) θ(n)

官方答案

(4) θ(n)

解析

一般二元樹(非二元搜尋樹)並沒有「左小右大」的排序性質,也沒有平衡保證,因此搜尋某個值 x 時,最壞情況必須走訪每一個節點,仍找不到或最後才找到,比較次數與節點數 n 成正比,時間複雜度為 θ(n)。只有平衡的二元搜尋樹高度約為 log n,搜尋才是 θ(log n);θ(1) 是陣列以索引直接存取的常數時間;θ(n log n) 則是合併排序、快速排序平均等排序演算法的等級。本題關鍵在於「最壞情況」與「未平衡的二元樹」。

AI 參考解析(推得答案已與官方答案比對一致),非官方公告內容,僅供備考參考。

官方資料