摘要:
大家都知道,平时我们要用到的集合大部分是List和Set。集合,在数学严格定义上讲,具有以下三个特征:确定性:集合中的元素应该是确定的,不能模棱两可。互异性:集合中的元素应该是互不相同的,相同的元素在集合中只能算作一个。无序性:集合中的元素是无次序关系的。 根据上面三个特征,所以我觉得Set才是真正意义上的集合概念。而List(可以有重复的元素)最多只能算是一个容器,把具有一致性的东西都可以装在里面。至于“确定性”和“无序性”,这里不讨论。那都是数学上的抽象概念。我们这里只讨论集合中元素的唯一性问题。其实集合的存在,就是对集合一系列的操作,比如数学上我们有相交,相并,补集的概念。而具体到程序里 阅读全文
摘要:
红黑树的作用大 家都知道“树结构”在整个数据结构是比较重要的一种,它既有线性表的查找速度,也有链表结构的插入删除性能。不错,理想中的平衡二叉树确实这样,但是现实 中情况并不总这样如意。如果一组数据比较有序,如递增,或递减的出现,那整个树将变得极其不平衡起来,假如我们现在的一组数据 是:2,4,45,65,76,形成的树如下图:这种树其实已经是一种链表结构了,查找复杂度为O(n)。或许你想到办法了,对,就是这样。树变得不平衡了,我们必需使之再平衡起来。这就是笔者这篇文章要说的问题:平衡二叉树,有时也叫红黑树。平衡规则:每个结点不是红色就是黑色(这也是红黑树来由)根结点总是黑色的如果父结点是红色, 阅读全文