数据结构与算法(7): 树形结构-伸展树 发表于 2016-10-28 | 分类于 数据结构与算法 介绍 伸展树(Splay Tree)和AVL树一样是一种特殊的二叉查找树。 特点: 当某个节点被访问时,伸展树会通过旋转使该节点成为树根。这样做的好处是,下次要访问该节点时,能够迅速的访问到该节点。 伸展树保证从空树开始连续M次对树的操作最多花费O($ ... 阅读全文 »
数据结构与算法(6): 树形结构-AVL树 发表于 2016-10-27 | 分类于 数据结构与算法 介绍 AVL树是根据它的发明者Adelson-Velsky和Landis命名的。 AVL树是带有平衡条件的二叉查找树。这个平衡条件必须要容易保持,而且保证树的深度必须是$O(\log{N})$,所以AVL树的查找、插入和删除在平均和最坏情况下都是$O(\log{N})$。它 ... 阅读全文 »
数据结构与算法(5): 树形结构-二叉查找树 发表于 2016-10-27 | 分类于 数据结构与算法 性质 若左子树不为空,则左子树上所有节点的值均小于它的根节点的值; 若右子树不为空,则右子树上所有节点的值均大于它的根节点的值。 左、右子树也分别为二叉查找树 实现 下面的实现代码中,insert和remove是通过递归实现的,之后用while语句替代对比一下。 1234567891011121 ... 阅读全文 »
数据结构与算法(4): 树形结构-树&二叉树 发表于 2016-10-27 | 分类于 数据结构与算法 树定义树:是n(n>=0)个节点的有限集。 当n=0时,称为空树 有且仅有一个特定的节点称为根节点 当n>1时,其余节点可分为k(k>0)个互不相交的有限集T1,T2,…,T3,其中每个集合本身又是一棵树,并且称为根的子树。 特性 节点的度:节点拥有的子树个数;树的度是树内各节 ... 阅读全文 »
数据结构与算法(3): 线性结构-队列 发表于 2016-10-26 | 分类于 数据结构与算法 队列:一种线性存储结构,和栈一样也是一种操作受限的表。 队列中数据是按照”先进先出(FIFO)“方式进出队列的。 队列只允许在”队首“删除,而在”队尾“插入。 顺序队列 建立顺序队列结构必须为分配一片连续的存储空间,并设置两个指针进行管理。一个是队头指针front,它指向队 ... 阅读全文 »
数据结构与算法(2): 线性结构-栈 发表于 2016-10-25 | 分类于 数据结构与算法 栈:一种线性存储结构,是限制插入和删除只能在一个位置上进行的表,该位置是表的末端,叫做栈顶。 栈中数据是按照“先进后出(LIFO)”方式进行出栈的 栈通常包括三种的三种操作:push(向栈中添加元素)、peek(返回栈顶元素)、pop(返回并删除栈顶元素) 栈的实现方式数组实现123456789 ... 阅读全文 »
数据结构与算法(1): 线性结构-表 发表于 2016-10-25 | 分类于 数据结构与算法 数组数组能够顺序存储相同类型的多个数据,数据的元素在内存上的存储地址是连续的。在声明数组的时候,需要指定数组的名称,它含有的数据类型以及数组的长度。特点:数据是连续的,随机访问速度快。(在Java中Collection集合中提供了ArrayList和Vector实现动态数组) 表(线性表)线性表:零 ... 阅读全文 »