首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在min堆中插入节点,末尾为空值。

在min堆中插入节点,末尾为空值。
EN

Stack Overflow用户
提问于 2022-03-26 20:47:45
回答 1查看 106关注 0票数 0

我得到了一个排序的最小堆数组:2,3,4,5,NULL

我想在其中插入值1,第一步将如何处理?

代码语言:javascript
复制
       2                     2
    /     \                /  \
   3       4   or this?   3    4
  / \      /             / \   
 5   NULL 1             5   1

如果节点是空的,情况会是相同的吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-27 07:09:39

整数堆没有NULL值。我认为NULL表示堆的容量,这意味着它在满之前只能有一个额外的值。

如果节点是空的,

会是相同的吗?

尽管这种表示形式很不寻常,但除了节点是空的以外,NULL没有其他任何意义。如果将其视为数据,则存在不一致性。堆中的值所使用的数据类型应该是一致的和可比较的。因此,NULL不是数据的选择。

当您插入下一个值时,应该使用第一个空槽。然后它应该被筛选到正确的位置。

因此,来自:

代码语言:javascript
复制
     2
    / \
   3   4
  / \     
 5   NULL

代码语言:javascript
复制
     2
    / \
   3   4
  / \
 5   1

代码语言:javascript
复制
     1
    / \
   2   4
  / \     
 5   3

顺便说一句:“分类堆”不是一件事。是的,排序列表也是堆,但是堆的强大功能是它不需要总是被排序。它只保证堆属性,即父节点永远不会大于其子节点。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71631723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档