是否可以搜索堆二进制树中的节点/元素并显示它的子/子?

时间:2015-03-28 13:31:34

标签: algorithm search heapsort

这不是一个任务问题,我刚开始用C ++语言学习堆和堆,我想知道这是否可行。

3 个答案:

答案 0 :(得分:0)

当然。给定节点N的子节点为2N和2N + 1。这同样适用于他们和他们的孩子,直到你到达堆的末尾。

答案 1 :(得分:0)

当然可以。堆树是一种数据结构。根据维基百科,数据结构是在计算机中组织数据的一种特殊方式,因此可以有效地使用它。因此,您始终可以搜索您拥有的数据,无论它是否在堆形式或其他形式。

答案 2 :(得分:0)

堆是二叉树数据结构,您可以搜索其中的任何元素。

但是,与二叉搜索树不同,堆是部分排序的,因此搜索效率较低。在二叉搜索树中,当您遵循从根到叶的单个路径时,平均时间复杂度为O(log n)。

在堆的情况下,您将搜索所有路径。对于路径,如果要搜索的元素大于特定节点处的值(在maxheap的情况下),则可以修剪搜索。

由于堆是一个几乎完整的二叉树(只有最后一级可能没有完全填充),所以任何节点i的子节点都在基于数组的实现中的2i + 1和2i + 2位置。

http://en.wikipedia.org/wiki/Binary_heap

了解详情