簡體   English   中英

當我們對二進制堆樹說抽象類型時,它是什么意思?

[英]What does it mean abstract type when we say it to a binary heap tree?

我讀過一個抽象類型一詞,它表示您可以使用結構或框架。 我說的是二進制堆樹。 我讀到它是一種抽象類型,但是當出現問題時,合並兩個最小堆來創建最大堆的時間復雜度是多少? 我得到了一些答案,說將樹的元素復制到數組中,並使用構建堆方法n在O(n)時間內創建最大堆! 但是當您不能遍歷樹作為抽象類型時,如何在const時間或O(n)時間復制min堆的元素。 剩下的唯一事情就是將所有元素逐個刪除n並將其保留在數組中,這將花費O(nlogn)時間。 誰能花些時間讓我理解這個疑問?

謝謝

我認為您正在將抽象數據類型的實現與其接口混淆。

要實現堆(或隊列等),您可以使用其內部結構進行任何操作。 注意,堆的內部結構可以是任何東西(數組,列表...); 實際上,堆的內部結構對用戶是隱藏的(但同樣:開發人員可以看到)。

已實現的堆將僅提供定義其抽象類型的接口方法。

當人們談論合並兩個堆時,他們所談論的是同時實現合並功能的堆。 在合並功能內(在堆的實現內),您可以使用內部實現的所有功能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM