码迷,mamicode.com
首页 > 其他好文 > 详细

AVL树 冲突链表

时间:2016-06-05 23:16:56      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:

;红黑树只不过是AVL树的变种而已 ,平衡方式耕地,意味着比AVL旋转的次数少,长应用于关联数组

红黑树和AVL树在实际开发中比较常用
;AVL树二叉平衡树 适合在内存中使用速度会达到最优化,要是在文件中那么速度大大降低
技术分享
;文件中适合用b+树,B+树读文件一次读的孩子结点比较多,一次read读取尽量多的结点到内存中缓存起来,下次直接从内存中返回.
技术分享
;百万级别的数据存文件用c库函数利用缓冲区一次不要读两个缓冲区的内容(<4096)设计树的结构,超过就自己设计fopen喽自己做大的缓冲区,降低文件访问的次数,孩子尽量的多并且孩子是有序的方便折半查找
;程序启动读文件到内存中生成AVL树
 
;解决AVL树插入等于数据不行的方法
为什么不能插入等于的数据呢看例子:
  1
0   2
      2
       2
那么这样怎么插入呢明显不知道往哪插入2了,即使能转转完也不是有序树了
   1
0    2=>2=>2
解决方法:相同的挂单向链表,2的后面挂链表也不会影响查询加个next字段
如果查询2 那么就把2头节点返回去(返回迭代器),你自己用迭代器循环要哪个2自己判断挑选
 
如果新插入一个2 那么就把2插入到头部,O(1)阶的插入
   1
0    2=>[2]=>2=>2
 
;如果挂数组就比较麻烦了,如果有很多相同的那么就不知道多个的数组够用,动态数组又浪费时间
 
;delete (void*)类指针 不会调用析构函数
用在删除链表用循环代替默认的析构函数递归调用方式,性能提高
 
;两个孩子如果交换位置还要交换链表才行
   1
0    2=>2=>2=>2
        3=>3=>3=>3
 
   1
0    2=>2=>2=>2
        3=>3=>3=>3
 
2的next等于3的next ,3的next等于2的next
 

AVL树 冲突链表

标签:

原文地址:http://www.cnblogs.com/jk0011/p/5561996.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!