数据结构 树 思考题 5

全部每周作业和视频思考题答案和解析 见 浙江大学 数据结构 思考题+每周练习答案汇总

题目1:有个堆其元素在数组中的序列为:58,25,44,18,10,26,20,12。如果调用DeleteMax函数删除最大值元素,请猜猜看:程序中的for循环刚退出时变量parent的值是多少?

首先child = 2,然后判断坐标为2的和Child+1=3的谁大,这里44大,所以child=3

然后后面的都不成立,因为12小于44,我们让坐标为1的根节点值为44。

然后再进行迭代,一直往下走,最后结果为6。

其实我们只需要知道最后把12填充到哪个格子里就好了。

题目2:建堆时,最坏情况下需要挪动元素次数是等于树中各结点的高度和。问:对于元素个数为12的堆,其各结点的高度之和是多少?

0+2*1+4*2 = 10

该题被题目迷惑了,没有思考直接写了答案。建堆时,倒数第二层算第一层,可以向下移动一次

倒数第三层算第二层,可以向下移动两次。倒数第一层算最后一层,可以向下移动三次。

所以3*1+2*2+1*3=10

比如当这个堆刚放进数组里正好为最小堆的时候,我们要调整为最大堆:

在处理倒数第二行,12 13和8都要下去,然后处理倒数第二行时,3和6也都要下去,而且要一直下到底。

题目3:下列序列中哪个是最小堆?

  • A.: 2, 55, 52, 72, 28, 98, 71

  • B. 2, 28, 71, 72, 55, 98, 52 

  • C. 2, 28, 52, 72, 55, 98, 71

  • D. 28, 2, 71, 72, 55, 98, 52

A不是,因为第2个和第5个相比,28<55

B不是,最后面的52小于父节点的71

C是

D不是,子节点2小于其父节点28

题目4::在最大堆 {97,76,65,50,49,13,27}中插入83后,该最大堆为:

  • A. {97,76,65,83,49,13,27,50}

  • B. {97,83,65,76,49,13,27,50}

  • C. {97,83,65,76,50,13,27,49}

  • D. {97,83,65,76,49,50,13,27}

插入先放到最后面,查看树的关系:97—76,65    76—50,49    65—13,27

所以新加入的83挂在50下面,然后跟50对调。

所以最后一个数一定是50.而且第二个数一定是83(因为是从根节点的左树向上替换的,所以不会是第三个数)现在排除选项A和选项C和D。

最后选B。

题目5:对由同样的n个整数构成的二叉搜索树(查找树)和最小堆,下面哪个说法是不正确的:

  • A. 二叉搜索树(查找树)高度大于等于最小堆高度

  • B. 对该二叉搜索树(查找树)进行中序遍历可得到从小到大的序列

  • C. 从最小堆根节点到其任何叶结点的路径上的结点值构成从小到大的序列

  • D. 对该最小堆进行按层序(level order)遍历可得到从小到大的序列

A正确,因为最小堆一定是完全二叉树,同样节点数量时高度最小。

B正确,我们由定义可以知道,该树一定是左子节点大于当前节点大于右子节点,比如如下这样的树:

C符合最小堆的定义

D错误。不一定是从小到大,可能中间有乱序。

  • 12
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dezeming

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值