![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 52
【Java语言版】数据结构,是学习【算法】的前提,很重要!!
loetca
这个作者很懒,什么都没留下…
展开
-
数据结构-13-图
十三、图(Graph)1、概念二叉树最多有两个子节点,节点存在父子关系,当我们想表示更多的关联关系时,就需要使用图来表示。一个图由多个顶点(vertex)组成,每两个相连顶点间的通路被称之为边(edge)。从某个顶点到另外一个顶点所经过的所有顶点,被称之为路径。无向图:顶点和顶点间的连接没有方向。即A-B,也可以是B-A。A***B*** ** *C***D有向图:顶点和顶点间的连接有方向。即只能是A-B,不能是B-A。A-->B↓↘C-->D带权图(网):图原创 2021-04-05 19:23:36 · 104 阅读 · 0 评论 -
数据结构-12-多路查找树
十二、多路查找树0、二叉树存在的问题当树的结点很多时,就会占用很多内存,并且在创建二叉树时,需要多次进行I/O操作(从磁盘中获取数据),同时树的深度较大,会降低操作效率。1、多叉树(Multiway Tree)① 多叉树二叉树的每个节点都有数据项,且最多只有两个子节点。如果二叉树的每个节点可以存放更多的数据、指向更多的子节点,这就是多叉树。多叉树通过重新组织节点,可以减少树的深度,从而优化二叉树结构。② 2-3树2-3树是由二节点和三节点构成的树结构,它是B树的一种。二节点要么有两个子节点,原创 2021-04-05 19:21:37 · 82 阅读 · 0 评论 -
数据结构-11-平衡二叉树
十一、平衡二叉树(AVL Tree)1、概念先看一个问题,如果给二叉排序树添加节点时是顺序的,那么创建出来的二叉排序树可能是一个单向链表,一直左子树或一直右子树,这样就失去了二叉树的优势(父节点可以含有两个子节点),而且树的高度可能会很大,查询效率会大大降低。1 9 2 8 3 7 4 6 5 5为了避免这种现象,产生了平衡二叉树。又叫平衡二叉搜索树(Self-bal原创 2021-04-05 19:20:09 · 232 阅读 · 0 评论 -
数据结构-10-二叉排序树
十、二叉排序树(Binary Sort Tree)1、概念也称为二叉搜索树(Binary Search Tree),对于每个非叶子节点,其左子节点的值小于或等于当前节点的值,而右子节点的值大于或等于当前节点的值。2、方法添加节点判断是否存在根节点,不存在直接赋值为根节点。存在则继续判断节点值和根节点值的大小,如果小于则向左子树添加,如果大于等于则向右子树添加。添加到子树时,先判断子节点是否存在,如果不存在则 直接指定为子节点,否则就给以子节点为根节点的子树,添加节点。查找结点判断是否和原创 2021-04-05 19:18:35 · 101 阅读 · 0 评论 -
数据结构-9-哈夫曼树
九、哈夫曼树(Huffman Tree)1、概念二叉树有n个节点,每个节点都有一个权值,所有叶子节点的权值最小的二叉树,被称为哈夫曼树。若根节点的层数为1,则从根节点到第L层的节点的路径长度为L-1。节点的权值,即带权路径长度(WPL,Weighted Path Length),节点与节点间的路径上,存在某个权值,某个节点与根节点的路径的权值之和,即节点的权值。哈夫曼树中权值较大的节点,距离根节点较近(最优)。2、转换过程所有的元素值存放在叶子节点上。将给定元素序列,依次添加到集合当中。原创 2021-04-05 19:16:55 · 628 阅读 · 0 评论 -
数据结构-8-线索化二叉树
八、线索二叉树1、概念n个节点的二叉树中含有 n + 1 ==> 2n - (n - 1) 个空指针(没有指向任何节点,一般是叶子节点),将这些节点,在某种遍历次序下,与其前一个结点(前驱节点,一般是父节点)或后一个节点(后继节点,一般是父节点)连接,这种连接的指针被称之为线索。所以线索二叉树又分为:前序线索二叉树、中序线索二叉树和后序线索二叉树 1 2 34 5 64的左指针为空,右指针指向25的左指针指向2,右指针指向16的左指针指向1,右指针指向3 12原创 2021-04-05 19:15:42 · 86 阅读 · 0 评论 -
数据结构-7-顺序存储二叉树
七、顺序存储二叉树1、概念将二叉树的节点,按照树的深度,一层一层地顺序依次存储到数组当中,并与二叉树进行绑定。顺序存储二叉树,一般只考虑完全二叉树。元素n(下标)的左子节点为 n * 2 + 1元素n(下标)的右子节点为 n * 2 + 2元素n(下标)的父节点为 (n - 1) / 2[1, 2, 3, 4, 5, 6, 7] 1 2 34 5 6 72、示例class ArrayBinaryTree<T> { private final T[] a原创 2021-04-05 19:14:09 · 149 阅读 · 0 评论 -
数据结构-6-二叉树
六、二叉树(Binary Tree)1、概念先看数组结构:可以通过下标访问元素,速度快,对于有序数组,还可以使用二分查找法,提高查询效率。但是如果检索具体的元素或插入元素(按照一定顺序),则会整体移动数组,效率较低。再看链表结构:插入和删除元素效率较高。但是查找元素时,需要从头节点开始查找,效率较低。树结构:将数组结构和链表结构结合,能提高添加和查找元素的效率。 ⑴ -------------- 根节点 ⑵ ⑶ -------------- 父节点原创 2021-04-05 19:12:23 · 96 阅读 · 0 评论 -
数据结构-5-哈希表
Hashtable【哈希表】原创 2020-01-06 22:38:20 · 105 阅读 · 0 评论 -
数据结构-4-栈
Stack【栈】原创 2020-01-06 22:19:47 · 136 阅读 · 0 评论 -
数据结构-3-队列
Queue【队列】原创 2020-01-06 22:17:11 · 113 阅读 · 0 评论 -
数据结构-2-链表
LinkedList【链表】原创 2020-01-06 22:13:37 · 113 阅读 · 0 评论 -
数据结构-1-稀疏数组
SpareArray【稀疏数组】原创 2020-01-06 22:11:40 · 149 阅读 · 0 评论