首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >怎么判断一个序列是不是堆?

怎么判断一个序列是不是堆?

作者头像
张拭心 shixinzhang
发布2022-05-06 15:42:34
发布2022-05-06 15:42:34
2.3K0
举报

已知一个序列,比如{100,6070,50,32,65},怎么判断是不是堆?

答案:把这个序列看成数组型的二叉树,如果根结点是i,左子树是2*i,右子树是2*i+1。

堆分为最大堆与最小堆。

  1. 最大堆中所有父节点都比左子树、右子树大,比如已知序列,画成堆就是:

所以已知序列是个最大堆。

  1. 最小堆中所有父节点都比左子树、右子树小,比如{32,50,60,70,100,65},画成堆:

符合以上两种情况的序列就是堆

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015-08-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 答案:把这个序列看成数组型的二叉树,如果根结点是i,左子树是2*i,右子树是2*i+1。
  • 堆分为最大堆与最小堆。
  • 符合以上两种情况的序列就是堆
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档