【数据结构】习题 |树与二叉树 |森林 |哈夫曼树 |线索二叉树

📖专栏文章:数据结构学习笔记
🪪作者主页:格乐斯

前言

15道题 涉及树与二叉树、哈夫曼树、线索二叉树、森林等知识点

1、

在这里插入图片描述

选A

树转二叉树遵循左孩子右兄弟的逻辑;即结点的左右分支是唯一的;所以树转二叉树只有唯一解


2、

在这里插入图片描述

选D

公式:
在这里插入图片描述

f(3)=6! / (3! x 4!)= 720/144 = 5

画图穷举所有情况:
在这里插入图片描述


3、

在这里插入图片描述

选D

二叉树度为0、1、2的结点总和为1001:

n1+n0+n2=1001

根据二叉树的性质可得:

n0=n2+1

联立上述两式可得:

2n0+n1=1002

根据完全二叉树的性质:

度为1的结点只存在有和没有两种情况,也就是n1=0或1

又因为 2n0是偶数,1002也是偶数,所以n1只能是0

得:2n0=1002 ,则n0=501,即叶子结点个数为501


4、

在这里插入图片描述

选C

若每层一个结点,则树的深度为1025;若树为完全二叉树或者满二叉树,则树的深度为log2 1025 +1=11


5、

在这里插入图片描述

选A

二叉树第k层有2(k-1)个结点,则m叉树第k层有m(k-1)个结点


6、

在这里插入图片描述

选C

树转二叉树的根结点不存在兄弟结点,所以根结点的右指针必然为空


7、

在这里插入图片描述

选C

结点的编号大于其左右孩子的编号意味着它排在左右孩子的后面,左孩子的编号大于右孩子的,结合以上信息可得遍历顺序为LRD,后序遍历


8、

在这里插入图片描述

选C

先交换左子树的左右子树,再交换右子树的左右子树,最后交换根结点的左右子树,这交换顺序对应了后序遍历;层次遍历也可以解决问题,但是比后序的消耗大


9、

在这里插入图片描述

选D

树的存储形式:双亲表示、孩子链表表示、孩子兄弟表示


10、

在这里插入图片描述

选C

先序遍历:DLR;后序遍历:LRD;两者序列正好相反,则DLR=DRL,即L=R,意味着二叉树每一层只有一棵子树。只有一个叶子结点


11、

在这里插入图片描述

选B

哈夫曼树结点的度只存在0和2两种可能:

n0+n2=199

根据二叉树的性质有:

n0=n2+1

所以2*n2=198,则n2=99,n0=100,即叶子结点有100个


12、

在这里插入图片描述

选C

在这里插入图片描述

如上图一棵二叉树,按照中序遍历写出遍历路径:

HBGXCAEDF

很明显X的前驱为G,为X左子树中最右结点,从这棵二叉树来看同时也是最右叶子结点,但这不是必然,如果没有结点G,那X的前驱就是B,仍然是左子树最右结点


13、

在这里插入图片描述

选A

引入二叉线索树的目的就是加快查找节点的前驱或后继的速度


14、

在这里插入图片描述

选C

特殊值法,如下图森林:

森林中有n=0个非终端结点

在这里插入图片描述

转换成二叉树:

二叉树中右指针域为空的结点只有D 1个

在这里插入图片描述

所以答案为n+1


15、

在这里插入图片描述

选A

哈夫曼树不一定是完全二叉树,不一定是满二叉树,它是最优二叉树

哈夫曼树没有度为1的结点,只有度为0或2的

两个权值最小的结点互为兄弟结点

任一非叶结点的权值一定不小于下一层任一结点的权值,因为非叶结点的权值一定由两个最小的权值相加

总结

本文主要介绍了15道涉及到树与二叉树、哈夫曼树、线索二叉树、森林等知识点的练习题


文章到这结束啦,感谢阅读~

如果文章的论述或代码等出现错误,欢迎前来指正!

如果你觉得文章写的还不错,记得点赞收藏评论三连~ ❤

img

  • 12
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值