在末尾为空值的最小堆中插入一个节点
Inserting a node in a min-heap with a null value at the end
我得到了一个排序的最小堆数组:2,3,4,5,NULL
我想在其中插入值1
,第一步如何处理?
2 2
/ \ / \
3 4 or this? 3 4
/ \ / / \
5 NULL 1 5 1
如果节点是空的,这会是一样的吗?
一堆整数没有 NULL
个值。我想 NULL
表示堆的容量,这意味着它在满之前只能再增加一个值。
Would be this the same if the node was empty instead?
尽管这种表示很不寻常,但 NULL
只能表示节点 是 空。如果认为是data,则存在不一致。用于堆中值的数据类型应该是一致的和可比较的。所以 NULL
不是 data.
的选项
插入下一个值时,应使用第一个空槽。然后将其筛选到正确的位置。
因此来自:
2
/ \
3 4
/ \
5 NULL
到
2
/ \
3 4
/ \
5 1
到
1
/ \
2 4
/ \
5 3
顺便说一句:“排序堆”不是东西。诚然,一个排序列表也是一个堆,但堆的强大之处在于它不需要总是被排序。它只保证堆属性,即父节点永远不会大于它的任何一个子节点。
我得到了一个排序的最小堆数组:2,3,4,5,NULL
我想在其中插入值1
,第一步如何处理?
2 2
/ \ / \
3 4 or this? 3 4
/ \ / / \
5 NULL 1 5 1
如果节点是空的,这会是一样的吗?
一堆整数没有 NULL
个值。我想 NULL
表示堆的容量,这意味着它在满之前只能再增加一个值。
Would be this the same if the node was empty instead?
尽管这种表示很不寻常,但 NULL
只能表示节点 是 空。如果认为是data,则存在不一致。用于堆中值的数据类型应该是一致的和可比较的。所以 NULL
不是 data.
插入下一个值时,应使用第一个空槽。然后将其筛选到正确的位置。
因此来自:
2
/ \
3 4
/ \
5 NULL
到
2
/ \
3 4
/ \
5 1
到
1
/ \
2 4
/ \
5 3
顺便说一句:“排序堆”不是东西。诚然,一个排序列表也是一个堆,但堆的强大之处在于它不需要总是被排序。它只保证堆属性,即父节点永远不会大于它的任何一个子节点。