堆樹的定義如下:
(1)堆樹是一顆完全二叉樹;
(2)堆樹中某個節點的值總是不大於或不小於其孩子節點的值;
(3)堆樹中每個節點的子樹都是堆樹。
當父節點的鍵值總是大於或等於任何乙個子節點的鍵值時為最大堆。 當父節點的鍵值總是小於或等於任何乙個子節點的鍵值時為最小堆。如下圖所示,左邊為最大堆,右邊為最小堆。
底層實現:用max_heap(最大堆)實現。預設情況下是以vector為底部容器
注意其中的top、push、pop寫法
關於push_heap與pop_heap的實現可參考:
中的push_heap與pop_heap原始碼
佇列與優先佇列
是一種特殊的線性表,特殊之處在於它只允許在表的前端 front 進行刪除操作,而在表的後端 rear 進行插入操作,和棧一樣,佇列是一種操作受限制的線性表。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。佇列的資料元素又稱為佇列元素。在佇列中插入乙個佇列元素稱為入隊,從佇列中刪除乙個佇列元素稱為...
佇列與優先佇列(queue)
是一種特殊的線性表,特殊之處在於它只允許在表的前端 front 進行刪除操作,而在表的後端 rear 進行插入操作,和棧一樣,佇列是一種操作受限制的線性表。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。佇列的資料元素又稱為佇列元素。在佇列中插入乙個佇列元素稱為入隊,從佇列中刪除乙個佇列元素稱為...
棧 佇列與優先佇列
123 45 include stack int s 入棧 push 出棧 pop 取棧頂top 123 45 include queue int s 入隊 push 出隊 pop 取隊首元素 front 不刪除 123 4priority queue int pq 入隊 push 出隊 pop 取...