数据结构 - ★知识点

二元查找树(二叉排序树、二叉搜索树)

首先是一棵二元树,然后它或空或满足以下性质:

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"<

上述判断语句形成的判断树

数据结构 - ★知识点_第1张图片

在实际中,学生成绩在五个等级上的分布是不均匀的。一般来说,70~90 出现的概率会一些,两极的概率小一些。

所以说,上述判断树并不是最优的判断树。

那如何形成一个最优的判断树?首先,必须获得各判断条件出现的次数或者概率。


先判断高概率的条件,会减少总的判断次数。

最佳判断树

数据结构 - ★知识点_第2张图片


总结

哈夫曼树是一棵最佳判定树,即总的比较次数最少的判定树。

哈夫曼树也叫最优二叉树


线性表就是顺序存储的表?

线性表是指除了第一个和最后一个元素外,其他元素都是首尾相连的。

注意:线性表不仅包含顺序存储的表,还包含链式存储的表。





你可能感兴趣的:(数据结构)