考研统考计算机英语,考研专业课之统考计算机蓝宝书(26)

本文探讨了二叉树与有序树的区别,并列举了满足特定序列条件的二叉树形态。同时,详细介绍了哈夫曼编码的构建过程,以及其在数据压缩中的应用,通过实例展示了如何为不同概率分布的字符设计哈夫曼编码,并计算了压缩率。此外,还提出了打印二叉树的算法,并讨论了二叉树序列化对唯一性的影响,通过具体例子解析了如何根据前序、中序和后序序列重建二叉树。
摘要由CSDN通过智能技术生成

3.4 例题举例

【例 3.1】一棵度为2的有序树与一棵二叉树有何区别?

解答:一棵度为二的有序树与一棵二叉树的区别在于,有序树的结点次序是相对于另一结点而言的,如果有序树中的子树只有一个孩子时,这个孩子结点就无须区分其左右次序,而二叉树无论其孩子数是否为2,均需确定其左右次序,也就是说二叉树的结点次序不是相对于另一结点而言而是确定的。

【例 3.2】试找出分别满足下面条件的所有二叉树:

(1)前序序列和中序序列相同; (2)中序序列和后序序列相同;

(3)前序序列和后序序列相同; (4)前序、中序、后序序列均相同。

解答:空树满足所有条件。非空树如下:

(1) 前序序列和中序序列相同的二叉树是:没有左子树的二叉树(右单支树)。

(2) 中序序列和后序序列相同的二叉树是:没有右子树的二叉树(左单支树)。

(3) 前序序列和后序序列相同的二叉树是:只有根的二叉树。

(4) 前序、中序、后序序列均相同的二叉树:只有根结点的二叉树。

【例3.3】假设用于通信的电文由字符集{a,b,c,d,e,f,g,h}中的字母构成,这8个字母在电文中出现的概率分别为{0.07,0.19,0.02,0.06,0.32,0.03,0.21,0.10}.

(1)为这8个字母设计哈夫曼编码。

(2)若用这三位二进制数(0...7)对这8个字母进行等长编码,则哈夫曼编码的平均码长是等长编码的百分之几?它使电文总长平均压缩多

解答:(1)构造哈夫曼树,可以解得哈夫曼编码为a:0010,b:10,c:00000,

d:0001,e:01,f:00001,g:11,h:0011。

(2) 用三位二进行数进行的等长编码平均长度为3,而根据哈夫曼树编码的平均码长为:4*0.07+2*0.19+5*0.02+4*0.06+2*0.32+5*0.03+2*0.21+4*0.10=2.61

2.61/3=0.87=87%

其平均码长是等长码的87%,所以平均压缩率为13%。

【例3.4】以二叉链表为存储结构,写一算法用括号形式(key LT,RT)打印二叉树,其中key是根结点数据,LT和RT是括号形式的左子树和右子树。并且要求空树不打印任何信息,一个结点x的树的打印形式是x而不是(x,)的形式。

【例3.5】若二叉树中各结点的值均不相同,则由二叉树的前序序列和中序序列,或由其后序序列和中序序列均能唯一地确定一棵二叉树,但由前序序列和后序序列却不一定能唯一地确定一棵二叉树。

(1)已知一棵二叉树的前序序列和中序序列分别为ABDGHCEFI和GDHBAECIF,请画出此二叉树。

(2)已知一棵二叉树的在序序列和后序序列分别为BDCEAFHG和DECBHGFA,请画出此二叉树。

(3)已知一棵二叉树的前序序列和后序序列分别为AB和BA,请画出这两棵不同的二叉树。

解答:(1)已知二叉树的前序序列为ABDGHCEFI和中序序列GDHBAECIF,则可以根据前序序列找到根结点为A,由此,通过中序序列可知它的两棵子树包分别含有GDHB和ECIF结点,又由前序序列可知B和C分别为两棵子树的根结点...以此类推可画出所有结点:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值