这不是一个任务问题,我刚开始用C ++语言学习堆和堆,我想知道这是否可行。
答案 0 :(得分:0)
当然。给定节点N的子节点为2N和2N + 1。这同样适用于他们和他们的孩子,直到你到达堆的末尾。
答案 1 :(得分:0)
当然可以。堆树是一种数据结构。根据维基百科,数据结构是在计算机中组织数据的一种特殊方式,因此可以有效地使用它。因此,您始终可以搜索您拥有的数据,无论它是否在堆形式或其他形式。
答案 2 :(得分:0)
堆是二叉树数据结构,您可以搜索其中的任何元素。
但是,与二叉搜索树不同,堆是部分排序的,因此搜索效率较低。在二叉搜索树中,当您遵循从根到叶的单个路径时,平均时间复杂度为O(log n)。
在堆的情况下,您将搜索所有路径。对于路径,如果要搜索的元素大于特定节点处的值(在maxheap的情况下),则可以修剪搜索。
由于堆是一个几乎完整的二叉树(只有最后一级可能没有完全填充),所以任何节点i的子节点都在基于数组的实现中的2i + 1和2i + 2位置。
了解详情