
数据结构
文章平均质量分 65
corefuture
啦啦啦
展开
-
数据结构-红黑树
红黑树是AVL树的变种,对红黑树的操作最坏情况下花费O(logN)的时间。相较于AVL树,红黑树更能用一种非递归的方式实现插入。红黑树是非严格的平衡二叉树,而AVL树是严格的平衡二叉树。 红黑树具有以下特征: 1、每个节点要么是红色,要么是黑色。 2、根节点是黑色。 3、NULL节点为黑色。 4、如果节点是红色,那么子节点必须是黑色。 5、从一个节点到一个null引用的路径必须包含相同的原创 2017-08-13 01:45:17 · 244 阅读 · 0 评论 -
数据结构-散列
散列表也叫散列,是以常数平均时间进行插入,查找,删除。散列的作用是将数据均匀的分布在不同的数据域中。根据散列值,将数据映射到对应的数据单元中,查找时根据散列值,直接在该数据单元中查找。将数据映射到不同数据域的函数叫做散列函数。具有一个好的散列函数和一个适合的散列表的大小能够将数据均匀的分布在散列表上。一个较好的散列函数public static int hash(String key, int t原创 2017-08-12 22:45:22 · 1221 阅读 · 0 评论 -
数据结构-B树
我们一直假设我们把数据存在内存中,在内存中数据的读写是十分快的,可是如果数据量太大,我们必须把数据写到磁盘中,可这时候数据的读写可没这么快了,大O模型也不再适用。市面上大多是的外存介质都是机械磁盘,速度主要靠转动磁盘和移动磁头的时间。一个7200RPM的磁盘,每分钟转7200下,一转大约为8.3毫秒,每秒大约能进行120次磁盘访问,可见效率是极其低下的,而处理器每秒能处理5亿个的指令。就算是AVL树原创 2017-08-12 18:15:05 · 276 阅读 · 0 评论 -
数据结构-线性表
所谓线性表就是具有一维线性的存储结构,一般有两种存储方式:顺序存储和链式存储。数组就是一种顺序的存储结构,ArrayList就是一种顺序表的实现类。那么来讲一下链式存储的链表。LinkedList则是采用链表实现的容器。 链表又分为单链表和双链表。单链表 An称为An+1的前驱节点,A0称为头节点。单链表只有一个指向后面节点的指针。 结构形式:java代码private class Node原创 2017-08-09 23:06:52 · 197 阅读 · 0 评论 -
数据结构-二叉查找树
数组和链表表示的结构只是元素的顺序,而树是一种能够表示层次结构的数据结构。 root节点为树的根节点,根下面还有很多子树,子树的根节点为root节点的儿子, 一个节点的上节点为该节点的父节点,父节点包含多个子节点。没有子节点的节点称为叶子。一个节点到根节点唯一路径的距离叫做深度,节点到下面叶子的距离称为高。例如E节点的深度为1高为2。 二叉树是一种树,该树每个节点不能有多于两个子节点。原创 2017-08-11 16:53:50 · 302 阅读 · 0 评论 -
数据结构-AVL树
AVL树叫做自平衡二叉查找树,是带有平衡条件的二叉查找树。这个平衡条件必须要保持,而且它保证树的深度是O(logN).一般情况的下的平衡条件是要求每个节点左子树的深度和右子树的高度最多不能超过1. 作为一个自平衡二叉查找树,所以在插入和删除时,我们都需要保持该树的平衡条件,即每一个节点两边子节点的高度差不能大于1.为了方便和快速,我们可以只在插入时作平衡操作,在删除时可以将该节点标识为无效(也原创 2017-08-11 21:55:34 · 215 阅读 · 0 评论