数据结构 - ★知识点

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

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

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 出现的概率会一些,两极的概率小一些。

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

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


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

最佳判断树



总结

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

哈夫曼树也叫最优二叉树


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

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

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





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值