題組內容
四、二元堆積(BinaryHeap)是一種優先佇列(PriorityQueue) ,主要用來管理具有優先權順序的資料物件,每個資料物件具有一個可以界定大小或前後順序的鍵值(Key),我們在此假設鍵值越低的資料物件有越高的優 先權。
(三)若有兩個二元樹T1及T2,其節點具有堆積特性且高度分別是O(logn) 與O(logm),請提供一個方法將此兩個二元樹結合成為一個節點具有堆積特性的二元樹T,此方法的時間須為O(logn+logm)。(10分)
詳解 (共 1 筆)
詳解
可以參考左撇子樹的合併方式
1. 將兩棵樹的root值比較,假設root值比較小的為T1,另一棵為T2
2. T1的root與左子樹保留成新樹T的root與左子樹,而右子樹目前為空
3. 將原本T1的右子樹與T2做合併,合併結果放在T的右子樹