// Copyright (c) 2015, Emir Pasic. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package main import ( "cmp" "github.com/emirpasic/gods/v2/trees/binaryheap" ) // BinaryHeapExample to demonstrate basic usage of BinaryHeap func main() { // Min-heap heap := binaryheap.New[int]() // empty (min-heap) heap.Push(2) // 2 heap.Push(3) // 2, 3 heap.Push(1) // 1, 3, 2 heap.Values() // 1, 3, 2 _, _ = heap.Peek() // 1,true _, _ = heap.Pop() // 1, true _, _ = heap.Pop() // 2, true _, _ = heap.Pop() // 3, true _, _ = heap.Pop() // nil, false (nothing to pop) heap.Push(1) // 1 heap.Clear() // empty heap.Empty() // true heap.Size() // 0 // Max-heap inverseIntComparator := func(a, b int) int { return -cmp.Compare(a, b) } heap = binaryheap.NewWith(inverseIntComparator) // empty (min-heap) heap.Push(2) // 2 heap.Push(3) // 3, 2 heap.Push(1) // 3, 2, 1 heap.Values() // 3, 2, 1 }