![](https://img-blog.csdnimg.cn/20190828095201374.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构与算法
Tong_Nan
这个作者很懒,什么都没留下…
展开
-
JAVA数据结构与算法(四)树
JAVA数据结构与算法(三)树 定义 树(Tree)是n(n≥0)个结点的有限集T,并且当n>0时满足下列条件: (1)有且仅有一个特定的称为根(Root)的结点; (2)当n>1时,其余结点可以划分为m(m>0)个互不相交的有限集T1、T2 、…、Tm,每个集Ti(1≤i≤m)均为树,且称为树T的子树(SubTree)。 特别地,不含任何结点(即n=0)的树,称为空树。 树的术语 1.结点:包含...原创 2019-05-19 18:56:44 · 247 阅读 · 0 评论 -
JAVA数据结构与算法(一)单链表
JAVA数据结构与算法(一)单链表 1.单链表 链表是最基本的数据结构,其存储的你原理图如下图所示 链表的增加操作 链表的删除 链表的插入: 1、头插法:每次把新插入的节点当着头结点; 2、尾插法:每次把新插入的节点放在尾部; 3、指定位置插入法:每次在指定位置插入某个节点。 链表的删除: 删除指定位置上的某个节点 链表的查询: 1、根据节点位置查询该节点; 2、根据节点查询节点存放的位置 ...原创 2019-05-12 15:21:38 · 264 阅读 · 0 评论 -
JAVA数据结构与算法(二)队列
JAVA数据结构与算法(二)队列 队列是一种比较特殊的线性结构。它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。 队列中最先插入的元素也将最先被删除,对应的最后插入的元素将最后被删除。因此队列又称为“先进先出”(FIFO—first in first out)的线性表,与栈(FILO-first in last...原创 2019-05-12 15:35:40 · 139 阅读 · 0 评论 -
JAVA数据结构与算法(三)栈
JAVA数据结构与算法(三)栈 栈是一种只能在一端进行插入和删除操作的特殊线性表。 其中,允许插入和删除的一端称为栈顶,另一端称为栈底。通常,将栈的插入操作称为入栈,删除操作称为出栈。入栈时元素总是放在栈底,而出栈的总是栈顶元素。因此,栈中元素采用的是“后进先出”的方式。 创建一个栈 public class MyStack <T> { private int top; private...原创 2019-05-12 15:41:16 · 143 阅读 · 0 评论 -
JAVA数据结构与算法(八)java实现红黑树
JAVA数据结构与算法(八)java实现红黑树 红黑树的性质 红黑树是一种自平衡二叉树,红黑树和AVL树一样都对插入时间、删除时间和查找时间提供了最好可能的最坏情况担保。 红黑树需要满足的五条性质: 性质一:节点是红色或者是黑色; 在树里面的节点不是红色的就是黑色的,没有其他颜色。 性质二:根节点是黑色; 根节点总是黑色的。它不能为红。 性质三:每个叶子节点是黑色。 [注意:这里叶子节点,是指为空...原创 2019-06-12 20:02:00 · 3250 阅读 · 1 评论 -
JAVA数据结构与算法(五)搜索二叉树(bst)的CURD操作
JAVA数据结构与算法(五)搜索二叉树(bst)的CURD操作 它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空, 则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。 查找时,从根节点与要查的数对比,大则在右子树查找,小则在左子树查找 添加时类似上面查找 删除是考虑三种情况,1.如果是叶...原创 2019-06-01 17:22:56 · 155 阅读 · 0 评论 -
JAVA数据结构与算法(六)java实现图
JAVA数据结构与算法(六)java实现图 图的定义 图是由顶点的有穷非空集合和顶点之间边的集合组成,通过表示为G(V,E),其中,G标示一个图,V是图G中顶点的集合,E是图G中边的集合。 无边图:若顶点Vi到Vj之间的边没有方向,则称这条边为无项边(Edge),用序偶对(Vi,Vj)标示。 有向图:若从顶点Vi到Vj的边是有方向的,则成这条边为有向边,也称为弧(Arc)。用有序对(Vi,Vj)标...原创 2019-06-06 21:35:34 · 563 阅读 · 0 评论 -
JAVA数据结构与算法(七)java实现AVL树
JAVA数据结构与算法(七)java实现AVL树 1,AVL树又称平衡二叉树,它首先是一颗二叉查找树,但在二叉查找树中,某个结点的左右子树高度之差的绝对值可能会超过1,称之为不平衡。而在平衡二叉树中,任何结点的左右子树高度之差的绝对值会小于等于 1。 2,为什么需要AVL树呢?在二叉查找树中最坏情况下查找某个元素的时间复杂度为O(n),而AVL树能保证查找操作的时间复杂度总为O(logn)。 对于...原创 2019-06-10 20:29:40 · 277 阅读 · 0 评论 -
JAVA数据结构与算法(九)HashMap源码
JAVA数据结构与算法(九)HashMap源码 HashMap概述 HashMap是一种基于哈希表实现的Map,它通过键的hashCode来快速的存取元素 HashMap允许插入null键和null值,允许多条记录的值为null,但只允许一条记录的键为null HashMap不是线程安全的,在并发环境下,可能会引起死循环 HashMap中的元素是无序的,无法保证遍历时的顺序是固定不变的 Hash...原创 2019-06-16 16:07:28 · 175 阅读 · 0 评论