数据结构与算法
文章平均质量分 94
zh1-0
我原来很懒。。。。。。。。
展开
-
数据结构与算法之美-26讲红黑树(下)
红黑树是一个让我又爱又恨的数据结构,“爱”是因为它稳定、高效的性能,“恨”是因为实现起来实在太难了。我今天讲的红黑树的实现,对于基础不太好的同学,理解起来可能会有些困难。但是,我觉得没必要去死磕它。 我为什么这么说呢?因为,即便你将左右旋背得滚瓜烂熟,我保证你过不几天就忘光了。因为,学习红黑树的代码实现,对于你平时做项目开发没有太大帮助。对于绝大部分开发工程师来说,这辈子你可能都用不着亲手写一个红黑树。除此之外,它对于算法面试也几乎没什么用,一般情况下,靠谱的面试官也不会让你手写红黑树的。 如果你对数据转载 2021-08-04 10:05:01 · 74 阅读 · 0 评论 -
数据结构与算法之美-25讲红黑树(上)
上两节,我们依次讲了树、二叉树、二叉查找树。二叉查找树是最常用的一种二叉树,它支持快速插入、删除、查找操作,各个操作的时间复杂度跟树的高度成正比,理想情况下,时间复杂度是O(logn)。 不过,二叉查找树在频繁的动态更新过程中,可能会出现树的高度远大于logn的情况,从而导致各个操作的效率下降。极端情况下,二叉树会退化为链表,时间复杂度会退化到O(n)。我上一节说了,要解决这个复杂度退化的问题,我们需要设计一种平衡二叉查找树,也就是今天要讲的这种数据结构。 很多书籍里,但凡讲到平衡二叉查找树,就会拿红黑转载 2021-08-03 11:30:37 · 91 阅读 · 0 评论 -
数据结构与算法之美-24讲二叉树基础(下)
二叉查找树最大的特点就是,支持动态数据集合的快速插入、删除、查找操作。 我们之前说过,散列表也是支持这些操作的,并且散列表的这些操作比二叉查找树更高效,时间复杂度是O(1)。既然有了这么高效的散列表,使用二叉树的地方是不是都可以替换成散列表呢?有没有哪些地方是散列表做不了,必须要用二叉树来做的呢? 二叉查找树(Binary Search Tree) 二叉查找树是二叉树中最常用的一种类型,也叫二叉搜索树。顾名思义,二叉查找树是为了实现快速查找而生的。不过,它不仅仅支持快速查找一个数据,还支持快速插入、删转载 2021-08-03 10:48:18 · 51 阅读 · 0 评论 -
数据结构算法之美(23)二叉树基础(上):树、二叉树
树中的每个元素我们叫作“节点”; 比如下面这幅图,A节点就是B节点的父节点,B节点是A节点的子节点。 B、C、D这三个节点的父节点是同一个节点,所以它们之间互称为兄弟节点。 我们把没有父节点的节点叫作根节点,也就是图中的节点E。 我们把没有子节点的节点叫作叶子节点或者叶节点,比如图中的G、H、I、J、K、L都是叶子节点。 其他概念 边(Edge):两个节点中间的连线。 高度(Height)、深度(Depth)、层(Level) 二叉树(Binary Tree) 树结构多...转载 2021-08-02 22:26:24 · 63 阅读 · 0 评论