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 <class Elem>
bool Compare(GTNode<Elem>* tree1, GTNode<Elem>* tree2) {
GTNode<Elem> *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 Elem> 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 <Elem>* n); // Insert first child
Void insert_next(GTNode <Elem> * n); // Insert next sibling
Void remove_first ( ); // Remove first child
Void remove_next ( ); // Remove right sibling
};
//General tree ADT
Template <class Elem> 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 <Elem>* ,GTNode<Elem>* );
Void print ( ); // print a tree
};
template <class Elem>
int gencount(GTNode<Elem>* subroot) {
if (subroot == NULL) return 0
int count = 1;
GTNode<Elem>* 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、除法算式的读法:通常按照从前往后顺序读,“÷”读作除以,“=”读作等于,其他读法不变。
3、除法算式各部分的名称:在除法算式中,除号前面的数叫被除数,除号后面的数叫除数,所得的数叫商。
三、用2~6的乘法口诀求商
1、求商的方法:
(1)用平均分的方法求商。
(2)用乘法算式求商。
(3)用乘法口诀求商。
2、用乘法口诀求商时,想除数和几相乘等于被除数。
四、解决问题
1、解决有关平均分问题的方法:
总数÷每份数=份数被除数=商×除数
总数÷份数=每份数被除数=商×除数+余数
一个因数=积÷另一个因数数除=被除数÷商
2、用乘法和除法两步计算解决实际问题的方法:
(1)所求问题要求求出总数,用乘法计算;
(2)所求问题要求求出份数或每份数,用除法计算。