堆的一个问题??

petkoala 2003-09-17 08:44:02
堆是一种有用的数据结构.下列哪一项关键码序列是一个堆?

a)16,72,31,23,94,53
d)94,53,31,72,16,53
c)16,53,23,94,31,72
d)16,31,23,94,53,72

该怎么分析这个问题呢,希望大家帮我看看!!!
...全文
81 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
wanggang8351 2003-09-17
  • 打赏
  • 举报
回复
我想楼上的朋友说的方法是最好的办法,既直观又不容易出错!!!!!!
generalking 2003-09-17
  • 打赏
  • 举报
回复
楼上兄弟说的对,用层次遍历看序列对应的完全二叉树的方法最科学!
LazyFarmer 2003-09-17
  • 打赏
  • 举报
回复
答案是D
你先将这一列数按层次遍历的方式画出他的树型结构
如果每一个节点的子孙树都小于或者都大于这个节点则是它是一个堆
Delphi1985 2003-09-17
  • 打赏
  • 举报
回复
凭我的观点是d 项
因为要知道它是一个堆的话,就应该满足第ai项<=i+1且ai<=ai+2
d 项的数据是16,31,23,94,53,72
当i 为1时
16<31,16<23
当i 为2时
31<53,31<72
所以它为一个堆
jiangyun007 2003-09-17
  • 打赏
  • 举报
回复
回复人: lddvb(ldd) 已经说的很清楚了,自己慢慢琢磨
beatles1979 2003-09-17
  • 打赏
  • 举报
回复
n个元素的序列{k1,k2,...,kn}当且满足下列关系时,称之为堆。
ki<=k2i ,ki<=k2i+1 或ki>=k2i ,ki>=k2i+1
(i=1,2,...,|-n/2-|)
若将和此序列对应的以为数组看成是一个完全二叉树,则堆的含义表明,完全二叉树中所有非终端结点的值均不大于其左,右孩子结点值。由此若序列{k1,k2,...,kn}是堆,则堆顶元素(或完全二叉树的根)必是序列中最小或最大值。

petkoala 2003-09-17
  • 打赏
  • 举报
回复
上面的兄弟能再解释一下么

E(i)小于等于或大于等于E(2i+1)和E(2i+2)???

意思是 E(2i+1) <= E(i)<= E(2i+2) 么

1<=i<=(n/2)对么
大胡子 2003-09-17
  • 打赏
  • 举报
回复
第一个元素下标是1,E(i)小于等于或大于等于E(2i+1)和E(2i+2),1<=i<=n/2)n 为元素个娄

符合这就是堆
hcpsoftware 2003-09-17
  • 打赏
  • 举报
回复
堆不是满二叉树而是完全二叉树,可别搞混了
shystar 2003-09-17
  • 打赏
  • 举报
回复
最简单的就是用堆的定义:
Si<=S2i&&Si<=S(2i+1)
鄢老 2003-09-17
  • 打赏
  • 举报
回复
你最好先把他们建立成一个满二叉树,在根据堆的定义,就一下看的出来了。
比如说:16,72,31,23,94,53 他可以排成这样:
16
72 31
23 94 53
这几一下可以看出,他不是堆

2,959

社区成员

发帖
与我相关
我的任务
社区描述
就计算机等级考试、软件初、中、高级不同级别资格考试相关话题交流经验,共享资源。
c1认证c4javac4前端 技术论坛(原bbs)
社区管理员
  • 软件水平考试社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧