数据结构 - ★知识点
2016-04-03 14:24
330 查看
二元查找树(二叉排序树、二叉搜索树)
首先是一棵二元树,然后它或空或满足以下性质:
1 若左子树不空,则左子树上所有结点的值均小于根的值;
2 若右子树不空,则右子树上所有结点的值均大于根 的值;
3 左右子树也都是二元查找树。
有n个分支结点的满二叉树的深度是多少?
设深度为 h ,则满二叉树的叶子有 2^(h-1) ,总节点数为2^h ,所以 n = 2^h - 2^(h-1) - 1。
h = log(n+1) + 1
哈夫曼树 ( Huffman )
在很多问题的处理过程中,我们需要进行大量的条件判断,而这些判断结构的设计直接影响着程序的执行效率。
例如:
if(score<60)
cout<<"Bad"<<endl;
else if(score<70)
cout<<"Pass"<<endl
else if(score<80)
cout<<"General"<<endl;
else if(score<90)
cout<<"Good"<<endl;
else
cout<<"Very good!"<<endl;
上述判断语句形成的判断树
在实际中,学生成绩在五个等级上的分布是不均匀的。一般来说,70~90 出现的概率会一些,两极的概率小一些。
所以说,上述判断树并不是最优的判断树。
那如何形成一个最优的判断树?首先,必须获得各判断条件出现的次数或者概率。
先判断高概率的条件,会减少总的判断次数。
最佳判断树
总结
哈夫曼树是一棵最佳判定树,即总的比较次数最少的判定树。
哈夫曼树也叫最优二叉树。
线性表就是顺序存储的表?
线性表是指除了第一个和最后一个元素外,其他元素都是首尾相连的。
注意:线性表不仅包含顺序存储的表,还包含链式存储的表。
首先是一棵二元树,然后它或空或满足以下性质:
1 若左子树不空,则左子树上所有结点的值均小于根的值;
2 若右子树不空,则右子树上所有结点的值均大于根 的值;
3 左右子树也都是二元查找树。
有n个分支结点的满二叉树的深度是多少?
设深度为 h ,则满二叉树的叶子有 2^(h-1) ,总节点数为2^h ,所以 n = 2^h - 2^(h-1) - 1。
h = log(n+1) + 1
哈夫曼树 ( Huffman )
在很多问题的处理过程中,我们需要进行大量的条件判断,而这些判断结构的设计直接影响着程序的执行效率。
例如:
if(score<60)
cout<<"Bad"<<endl;
else if(score<70)
cout<<"Pass"<<endl
else if(score<80)
cout<<"General"<<endl;
else if(score<90)
cout<<"Good"<<endl;
else
cout<<"Very good!"<<endl;
上述判断语句形成的判断树
在实际中,学生成绩在五个等级上的分布是不均匀的。一般来说,70~90 出现的概率会一些,两极的概率小一些。
所以说,上述判断树并不是最优的判断树。
那如何形成一个最优的判断树?首先,必须获得各判断条件出现的次数或者概率。
先判断高概率的条件,会减少总的判断次数。
最佳判断树
总结
哈夫曼树是一棵最佳判定树,即总的比较次数最少的判定树。
哈夫曼树也叫最优二叉树。
线性表就是顺序存储的表?
线性表是指除了第一个和最后一个元素外,其他元素都是首尾相连的。
注意:线性表不仅包含顺序存储的表,还包含链式存储的表。
相关文章推荐
- 数据结构学习-线性表(1)
- 数据结构学习-绪论(2)
- 数据结构 - 队列
- 数据结构学习-绪论(1)
- 可持久化数据结构题目泛做。
- 数据结构(Splay平衡树):COGS 339. [NOI2005] 维护数列
- 数据结构之简单排序算法
- 数据结构实验之队列一:排队买饭
- ural 1654. Cipher Message
- 2015年大二上-数据结构-内部排序-(8)-基数排序
- 2015年大二上-数据结构-内部排序-(7)-归并排序
- 2015年大二上-数据结构-内部排序-(6)-堆排序
- 2015年大二上-数据结构-内部排序-(5)-直接选择排序
- Swust Oj 数据结构题目输出格式总结(持续更新)
- C++ 自己实现数据结构之 string类
- 数据结构知识基础之指针
- 数据结构 - ★★知识点
- 图的最短路径
- [Python笔记][第二章Python序列-复杂的数据结构]
- [Python笔记][第二章Python序列-复杂的数据结构]