3,4班第四次作业.pptVIP

  • 50
  • 0
  • 约2.68千字
  • 约 17页
  • 2021-01-07 发布于安徽
  • 举报
第四次作业 封煜佳 mf0932012@software.nju.edu.cn Chaper 4 7. 给定权值{ 15, 03, 14, 02, 06, 09, 16, 17 }, 构造相应的霍夫曼树,并计算它的带权外路径长度。 霍夫曼树构造方法: 1)对于给定的n个权值w0,w1,?,wn-1(n≥2),构成n棵二叉树的集合T = { T0,T1,T2,?,Tn-1},使得每一棵扩充二叉树只具有一个带权为wi的根结点。 2)构造一棵新的扩充二叉树,在集合T中找出两个权值最小的树作为新树根结点的左右子树,把新树根结点的权值赋为其左右子树根结点的和。 3)在集合T中删除这两棵树,并把得到的新扩充二叉树加入到集合中。 4)重复步骤(2)、(3)的操作,直到集合T中只含有一棵树为止。 WPL=(17+16)*2+(15+14+9)*3+6*4+(2+3)*5=229 注意:由于左右分枝选择不同,所以霍夫曼树并不唯一。但带权外路径的长度应该是相同的。 82 33 49 17 16 29 20 15 14 9 11 6 5 3 2 统考题: 6. 下列二叉排序树中, 满足平衡二叉树定义的是 B A. B. C. D. Chapter 4.1 统考题: 7. 下列叙述中, 不符合m阶B 树定义要求的是 D A. 根结点最多有m棵子树 B. 所有叶结点都在同一层上 C. 各结点内关键字均升序或降序排列 D. 叶结点之间通过指针链接 Chapter 4.1 Chapter 4.1 1. Show the result of inserting 3, 1, 4, 6, 9, 2, 5, 7 into an initially empty binary search tree. 显示将3,1,4,6,9,2,5,7插入到初始为空的二叉查找树中的结果 Show the result of deleting the root. 显示删除根后的结果 3 1 4 6 9 2 5 7 1.a 1.b 或者 1 4 6 9 2 5 7 方案一 以左子树中序遍历的最后一个节点为根 2 1 4 6 9 5 7 方案二 以右子树中序遍历的第一个节点为根 Chapter 4.1 2. 写一递归函数实现在带索引的二叉搜索树(IndexBST)中查找第k个小的元素。 leftsize=左子树中元素个数+1 leftSize left element right 2.代码实现: Public BinaryNode findkth(BinaryNode t,int k) { if(k=0 || t==null) return null; //空 if(kt.leftsize) //在左子树 return findkth(t.left , k); else if(tt.leftsize) //在右子树 return findkth(t.right , k-t.leftsize); else //当前节点 return t.element; } Chapter 4.1 3. 对一棵空的AVL树,分别画出插入关键码为{ 16,3,7,11,9,28,18,14,15}后的AVL树 16 16 3 16 3 7 左双 7 3 16 3. 7 3 16 11 7 3 16 11 9 右单 7 3 11 9 16 7 3 11 9 16 28 左单 11 7 16 3 28 9 11 7 16 3 28 9 18 右双 11 7 18 3 28 9 16 11 7 18 3 28 9 16 14 11 7 18 3 28 9 16 14 15 左双 11 7 18 3 28 9 15 14 16 Chapter 4.1 4.Design an algorithm to test whether a binary tree is a binary search tree. 设计一个算法来检查一棵树是否为二叉搜索树 4. 思路一: 中序遍历树,然后将遍历的结果保存。如果保存的结果是以升序排列的,那么这棵树就为搜索二叉树 思路二: 使用递归算法。检查树的根,如果根大于左

文档评论(0)

1亿VIP精品文档

相关文档