平衡二叉排序树
让编程改变世界
Change the world by program
平衡二叉排序树
不知道各位小伙伴们回家有没有去自己打打代码,如果你认真研究了,你肯定会发现,这二叉排序树的效率还真得碰运气噢,大家一起来分析以下两种情况:
如果序列是像[5, 9, 7, 6, 3, 4, 1, 8, 2]这样的组合,那么化成二叉树是酱紫:
如果我们想查找结点9,只需要两次比较就可以找到噢。
如果序列是像[1, 2, 3, 4, 5, 6, 7, 8, 9]这样从小到大有序的组合,那么Ta得到的将是一个极端的右斜树:
[caption id="attachment_3098" align="aligncenter" width="600"]
平衡二叉排序树[/caption]
不过要注意,Ta依然满足二叉排序树的条件,如果想要查找到结点9,则需要9次比较才可以得到结果。
所以我们发现了,同样的序列,排序不同的话,生成的二叉排序树查找效率差别很大,而序列本身的顺序对于二叉排序树的生成又是没有很大的关系,所以我们需要找到一个合适的方法,使得用户提供任何一个组合的序列,都排成查找效率尽量高的二叉排序树。
有没有办法解救呢?答案是肯定有的,我们学习《数据结构和算法》这个系列的教程就是不断发现已知的不足然后再不断去提升。
如果我们希望对一个序列按照二叉排序树进行查找,最好就是把它构建成一棵平衡的二叉排序树(AVL树)。
...... 省略,具体请看视频讲解 ......
[buy]
获得所有教学视频、课件、源代码等资源打包 [/buy]
[Downlink href='http://kuai.xunlei.com/d/BdsUAwJ7KAD5II9S469']视频下载[/Downlink]
[Downlink href='http://urlxf.qq.com/?yEZ3EzR']备胎下载[/Downlink]