在这段时间里,发现自己的学习方式有待改进,学了好多零碎的知识点但将这些点联系起来究其原理的时候脑子总是模模糊糊,不是忘了这就是忘了那,没有确切的观点,原因就在平时的学习中没有多思考,没有打破砂锅问到底的态度,学到了什么就是什么,没有究其本质,比如这段时间在复习数据结构,在复习到树相关的知识点时,发现自己对树的了解还是不够深入,进而查阅了很多资料,比如
为什么二叉树需要排序?
为了更方便的存储和查找(二分查找)。
为什么需要avl树?
防止极端情况下二叉树退化为链表的情况,调整树的平衡尽可能降低树的高度,提升查找性能,降低时间复杂度,将时间复杂度从O(N)降为log(N)。
为什么有了平衡树还需要红黑树?
虽然平衡树解决了二叉查找树退化为近似链表的缺点,能够把查找时间控制在 O(logn),不过却不是最佳的,因为平衡树要求每个节点的左子树和右子树的高度差至多等于1,这个要求实在是太严了,导致每次进行插入/删除节点的时候,几乎都会破坏平衡树的规则,进而我们都需要通过左旋和右旋来进行调整,使之再次成为一颗符合要求的平衡树。显然,如果在那种插入、删除很频繁的场景中,平衡树需要频繁着进行调整,这会使平衡树的性能大打折扣,为了解决这个问题,于是有了红黑树.与平衡树不同的是,红黑树在插入、删除等操作,不会像平衡树那样,频繁着破坏红黑树的规则,所以不需要频繁着调整,这也是我们为什么大多数情况下使用红黑树的原因。

当把已有的零碎知识点串联成知识面,并晓得为什么要这样做的时候说明才是真正的掌握了,一定要多思考为什么,为什么,为什么。

©著作权归作者所有:来自51CTO博客作者wx5d3c7e0ad6c30的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 数据结构与算法专题——第六题 树状数组
  2. 致IT人:健康、家庭、事业之平衡
  3. 万字长文!二叉树入门和刷题看这篇就够了!
  4. android获取网页数据的几种方式
  5. 数据结构基础知识核心归纳(三)
  6. Android如何计算View的深度
  7. 初级android面试经验1.0
  8. Flutter-基础组件2
  9. Flutter学习笔记(24)--SingleChildScrollView滚动组件

随机推荐

  1. 安卓第三天---ViewPager控件实现滑动切换
  2. Android(2017-2018)BAT面试题整理(Android
  3. Android Fragment生命周期图以及Activity
  4. android警告——Buttons in button bars
  5. Getting Started with RabbitMQ on Andro
  6. Android使用Intent调用摄像头并获取照片
  7. GoBelieve Android SDK接入备忘
  8. ADB命令详解
  9. 在Windows系统中使用NDK编译Android二进
  10. Android框架结构了解