最新湖南大学数据结构第5次作业

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1、画出对下列存储于数组中的值执行buildheap后得到的最大值堆:

10 5 12 3 2 1 8 7 9 4

先序遍历为12 10 4 1 2 9 5 8 3 7

中序遍历为1 4 2 10 5 9 12 3 8 7

2、假设某字母表各个字母的权如下:

Q Z F M T S O E

2 3 10 10 10 15 20 30

(a)按照这个字母表,一个包含n个字母的字符串采用Huffman编码在最差情况下需要多少位?怎样的串会出现最差情况?

在最差的情况下需要5*n位,当所有的字母都是Q或者Z的时候。

(b)按照这个字母表,包含n个字母的字符串采用Huffman编码在最佳情况下需要多少位?怎样的串会出现最佳情况?

在最佳的情况下需要2*n位,当所有的字母都是E或者O的时候。

(c)按照一个字母表,一个字母平均需要多少位?

(2*30 + 2*20 + 3*15 + 3*10 + 3*10 + 4*10 + 5*3+ 5*2)/100 =2.7

∴ 2.7

3、编写一个算法来判断两棵树是否相同。尽可能提高算法效率,并分析算法的运行时间代价。

template

bool Compare(GTNode* tree1, GTNode* tree2) {

GTNode *num1, *num2;

if (((tree1 == NULL) && (tree2 != NULL)) ||

((tree2 == NULL) && (tree1 != NULL)))

return 0;

if ((t1 == NULL) && (t2 == NULL)) return 1;

if (tree1->val() != tree2->val()) return 0;

Num1 = tree1->left_child();

Num2 = tree2->left_child();

while(!((num1 == NULL) && (num2 == NULL))) {

if (!Compare(num1, num2)) return false;

if (num1 != NULL) num1 = num1->right_value();

if (num2 != NULL) num2 = num2->right_value();

}}

O(n)

4、编写出一个函数,以一棵树为输入,返回树的结点数目。要求使用下面给出的GenTree和GTNode ADT。

// General tree node ADT

Template class GTNode {

Public:

GTNode (const Elem&); // Constructor

~GTNode ( ); // Destructor

Elem value ( );

Bool isLeaf ( );

GTNode * parent ( );

GTNode * right_sibling ( );

Void setValue ( Elem &);

Void insert_first(GTNode * n); // Insert first child

Void insert_next(GTNode * n); // Insert next sibling

Void remove_first ( ); // Remove first child

Void remove_next ( ); // Remove right sibling

};

//General tree ADT

Template class GenTree {

Private:

Void printhelp ( GTNode *) ; // Print helper function

Public :

GenTree ( ); //Constructor

~GenTree ( ); //Destructor

Void clear ( ); // Send nodes to free store

GTNode* root ( ); // Retrun the root

// Combine two subtrees

Void newroot (Elem& , GTNode * ,GTNode* );

Void print ( ); // print a tree

};

template

int gencount(GTNode* subroot) {

if (subroot == NULL) return 0

int count = 1;

GTNode* temp = rt->leftmost_child();

while (temp != NULL) {

count += gencount(temp);

temp = temp->right_sibling();

}

return count;

}

5、对下列用(6.3)式编码方法写出的树的顺序表示,画出树的形状。

XPC)Q)RV)M))))

新人教版二年级下册数学知识点复习总结

第一单元数据收集整理

1、用画“正”字的方法收集数据。

2、用统计图表来表示数据的情况。

3、根据统计图表可以做出一些判断。

4、数据收集---整理---分析表格。

第二单元表内除法(一)

一、平均分

1、平均分的含义:把一些物品分成几份,每份分得同样多,叫平均分。

2、平均分的方法:

(1)把一些物品按指定的份数进行平均分时,可以一个一个的分,也可以几个几个的分,直到分完为止。

(2)把一些物品按每几个一份平均分,分时可以想:这个数可以分成几个这样的一份。

二、除法

1、除法算式的含义:只要是平均分的过程,就可以用除法算式表示。

2、除法算式的读法:通常按照从前往后顺序读,“÷”读作除以,“=”读作等于,其他读法不变。

相关文档
最新文档