数据结构问答题

本文详细探讨了哈夫曼树的性质,包括叶子节点与非叶子节点的数量关系,以及在二叉链表存储结构中的空指针域计算。此外,还涉及了循环队列、二分查找法、有序顺序表、m叉树的节点度数关系、单链表的判空条件和二叉树节点的判断。同时,提到了二叉排序树的平均查找长度和双向循环链表的节点删除操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、设哈夫曼树中的叶子结点总数为m,若用二叉链表作为存储结构,则该哈夫曼树中总共有()个空指针域。

哈夫曼树不存在入度为1 的结点,所以n0=n2+1 
设哈夫曼树中的叶子结点总数为m,若用二叉链表作为存储结构,则该哈夫曼树中总共有(2m)个空指针域; n0=m 
树的二叉链表存储结构就是孩子-兄弟表示法。 
孩子-兄弟表示法:数据域是结点,如A; 有两个指针域:1)指向长子 2)指向右兄弟 
哈夫曼树的孩子-兄弟表示法的空指针域有三种情况:(1)叶子结点长子域一定为空m个(2)根节点的右兄弟域一定为空 1个 (3)除去根节点外,哈夫曼树的其余结点个数中有一半结点的右兄弟域为空 (n总-1)/2=n2 

所以空指针域=m+1+n2=2m

哈夫曼树权值结点的父结点实际上是没有值的

2、设顺序循环队列Q[0: M-1]的头指针和尾指针分别为F和R.头指针F总是指向队头元素的前一位置.尾指针R总是指向队尾元素的当前位置.则该循环队列中的元素个数为:(R-F+M)%M

书中定义的队列长度为:(rear-front++QueueSize)%QueueSize
1.rear: 定义中是指向末尾元素的下一个位置, 本题中是直接指向末尾元素, 所以将rear向后移动一个位置, R-1
2.front:定义中是指向首元素, 而本题中是指向首元素的前一个元素, 因此向后移动一个位置, F-1
rear = R-1      front = F-1        所以: [ (R - 1) - ( F - 1) + M]%M  =  (R-F+M)%M 

注意是循环队列,头可能在尾的后面,所以要+M%M

3、设有序顺序表中有n个数据元素,则利用二分查找法查找数据元素X的最多比较次数不超过(log2(n)+1)

因为二分查找每次排除掉一半的不适合值,所以对于n个元素的情况:一次二分剩下:n/2,两次二分剩下:n/2/2 = n/4
,m次二分剩下:n/(2^m),在最坏情况下是在排除到只剩下最后一个值之后得到结果,所以为,n/(2^m)=1;2^m=n;
此时时间复杂度为log2(n),再与最后一个元素比较复杂度+1,所以时间复杂度为:log2(n)+1

4、设一棵m

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值