生成Huffman树步骤:
- 先对权值从小到大排序。
- 选两个最小的加起来成为一个新结点,而这两个最小的值是新结点的左右子结点。
- 两个老的结点去掉,新的结点放入再次排序然后重复过程②。
- 直到完全生成一棵树。
思路:堆分为最大堆和最小堆,最大堆中所有父节点都比左子树、右子树大,最小堆中所有父节点都比左子树、右子树小。
把序列看成数组型的二叉树,如果根结点是i,左子树是2i,右子树是2i+1,比较i节点与2i节点及2i+1的大小关系
答案:1078
思路:先构建哈夫曼树,将那些初始权值里面有的值,分别乘以它们深度(传统说的深度减一),加起来就是带权路径长度
带权外部路径长度计算:
WPL = 2×100 + 3×64 + 2×81 + 4×25 + 3×49 + 3×36 + 5×16 + 6×9 + 7×1 + 7×4 =1078
其实直接把红色框内的数值进行累加求和,也可以得出正确答案。
WPL = 5 + 14 + 30 + 55 + 119 + 219 + 385 + 166 + 85 = 1078
答案:C
返回字符串从第五个位置开始的9个字符
答案:D
线性表查找和树型查找都是利用了数据元素之间的关系进行查找,只有散列查找是利用关键词值与存储位置来进行查找
区别“空串”和“空格串”
- 空格串:由一个或多个空格组成的串’ '称为空格串,即只含空格的串,它的长度为串中空格字符的个数
- 空串:零个字符的串称为空串,它的长度为零
附参考链接:
https://www.bilibili.com/video/BV16J411b7ar?t=1
https://www.jianshu.com/p/52943ce0523e