Kotlin实现二叉堆、大顶堆、优先级队列
参考了 https://www.bilibili.com/video/BV11t4y1r79L https://blog.csdn.net/qq_19782019/article/details/78301832 他们已经写的足够好了。我最近都在用Kotlin编程开发,我尝试用Kotlin实现了大顶堆,并且作为手动实现的优先级队列,通过了Leetcode 347。 package main.kotlin /** * 二叉堆(大顶堆、优先级队列) * * @Date 2021-10-14. * @author Johnathan Lin */ data class MaxHeap<T : Comparable<T>>( val arr: Array<T>, var size: Int ) { //将无序的数组构建一个二叉堆 fun makeHeap() { for (i in (size - 1) downTo 0) { heapDown(i) } } //向二叉堆中加入元素 fun addItem(value: T) { //TODO 添加的边界还未考虑 val newIndex = size++ arr[newIndex] = value heapUp(newIndex) } //移除堆顶元素 fun removeItem(): T { //TODO 删除的边界还未考虑 val removeValue = arr[0] val lastValue = arr[size - 1] // println("lastValue:$lastValue") arr[0] = lastValue size-- heapDown(0) return removeValue } fun printHeap() { for (i in 0....