【发布时间】:2012-01-28 03:04:36
【问题描述】:
我正在尝试检查 Max-Heap 以查看父母是否有孩子。我的堆是作为向量实现的。起初我写了一个函数 bool hasChildren(int loc) loc 是堆中父级的位置。 我的主要条件是:
if(heap[2*loc + 1] == NULL && heap[2*loc + 2] == NULL) //if there are children
问题是您无法检查越界索引...我想到了指针算术,但这也是无效的。有人对如何检查堆中的父母是否有孩子有建议吗?
谢谢!
【问题讨论】:
-
这是你实现中的向量
吗?在这种情况下,您可能需要删除 C 标记。 -
但不应该反过来,如果至少一个子索引不为空,您的节点就有子节点吗?