我正在尝试概述一种算法来确定我的数组是否是最小堆。有没有任何文档可以帮助我解决这个问题?我在 Apache 的网站上找到了它的函数,但它没有确切地显示该函数是如何工作的;只是存在一个函数(BinaryHeap(boolean isMinHeap))。
最佳答案
The Wikipedia article应该对你有帮助。
这里有一些问题可以帮助您思考解决方案:
- 假设堆是最小堆,关于堆的根必须正确的是什么?
- 如果堆的根满足最小堆属性,如何确保根的子树也拥有该属性?
- 如果树的根没有 child 怎么办?它是最小堆吗?
关于arrays - 检查包含 n 个元素的数组是否为最小堆的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4157159/