
java数据结构
interesting_code
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
图的小结及深度优先和广度优先遍历
什么是图 前面我们学了线性表和树,线性表局限于一个直接前驱和一个直接后继的关系 树也只能有一个直接前驱也就是父节点,当我们需要表示多对多的关系时,这里我们就用到了图。 图是一种数据结构,其中结点可以具有零个或多个相邻元素。两个结点之间的连接称为边。结点也可以称为顶点。如图 图的常用概念 1)顶点(vertex):顶点就是图的每一个点 2)边(edge):两个顶点若能相连,连的线就是一个边 3)路...原创 2020-02-20 21:15:39 · 1848 阅读 · 1 评论 -
平衡二叉树(AVL)的左旋转右旋转和双旋转
平衡二叉树的介绍 首先,咱们先来说一下为什么要提出平衡二叉树的概念,如果一个二叉排序树是一个只有左子树或者右子树的二叉排序树的时候,其实它就相当于一个链表,但是他的查询,删除,遍历的速度却没有链表快。这是为什么呢。因为在每次查询,删除,遍历的时候,要去判断他的左节点或者右节点是否为null,所以浪费了时间。所以我们提出平衡二叉树的概念 基本介绍 1)平衡二叉树也叫平衡二叉搜索树(Self-bala...原创 2020-02-19 14:12:42 · 2189 阅读 · 3 评论 -
二叉排序树(节点的添加-遍历-删除)
二叉排序树的简介 二叉排序树:BST: (Binary Sort(Search) Tree),对于二叉排序树的任何一个非叶子节点,要求左子节点的值比当前节点的值小,右子节点的值比当前节点的值大。 特别说明:如果有相同的值,可以将该节点放在左子节点或右子节点 比如针对据 (7, 3, 10, 12, 5, 1, 9),对应的二叉排序树为: 二叉排序树创建和遍历 一个数组创建成对应的二叉排序树,并...原创 2020-02-19 13:46:55 · 361 阅读 · 1 评论 -
赫夫曼树小结
赫夫曼树的介绍 给定n个权值作为 n个叶子结点,构造一棵二叉树,若该树的带权路径长度(wpl)达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree),还有的书翻译为霍夫曼树。 赫夫曼树是带权路径长度最短的树,权值较大的结点离根较近 赫夫曼树几个重要概念 1)路径和路径长度:在一棵树中,从一个结点往下可以达到的孩子或孙子结点之间的通路,称为路径。通路中分支的数目称为路径长...原创 2020-02-17 14:28:48 · 221 阅读 · 1 评论 -
排序算法小结6——堆排序(详细图解)
什么是堆 堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆, 注意 :没有要求结点的左孩子的值和右孩子的值的大小关系。每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆 大顶堆图示 小顶堆图示: 堆排序的基本介绍 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为 O(nlogn),它也是不稳定排序。...原创 2020-02-17 13:29:14 · 848 阅读 · 1 评论 -
二叉树小结
什么是树 在了解二叉树之前我们先来认识一下什么是树。 树是一种数据结构,它是由n(n>=1)个有限结点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:每个结点有零个或多个子结点;没有父结点的结点称为根结点;每一个非根结点有且只有一个父结点;除了根结点外,每个子结点可以分为多个不相交的子树;它是一种插入数据效率比链表高,...原创 2020-02-15 21:12:52 · 243 阅读 · 0 评论 -
约瑟夫环问题
最近刚学完环形单向链表,并用来解决了算法中的经典问题-——约瑟夫环问题,下面来对环形单向链表及其解决约瑟夫环问题的一些要点做一个小结 1.单项环形链表的简介 单向环形链表和单链表大体基本相似,他的不同就在于他是首尾相连的单链表,也就是说它是将单链表的最后一个节点的next指向了第一个节点或者头节点,(ps:如果不清楚什么是单链表请参考我的上一篇博客)如图所示: 2.约瑟夫问题 Josephu问题...原创 2020-02-06 00:29:32 · 1642 阅读 · 1 评论 -
java单链表的增删改查
说在前面:过年这几天想学习却静不下心,一个单链表看了5天,,,咳咳,好了,现在来总结下但单链表的一些简单的东西 1.什么是链表 链表是有序的列表,但是他在内存中的存储和列表并不一样,如图 链表是以节点的方式来存储数据的,是链式存储,他的每个节点分为两部分,data域和next指针域,data域是用来保存该节点的数据,next域用来指向下一个节点,所以链表中的各个节点并不一定是连续存储的。 逻辑示...原创 2020-01-28 21:40:57 · 489 阅读 · 0 评论 -
队列和环形队列
1.什么是队列 队列是我们平时生活中比较常见的一种数据结构,比如银行的叫号排队就是一个典型的队列,或者我们更常见的食堂排队打饭,等等等等 a.队列是一个有序列表,可以是数组或者链表来实现 b.队列遵循先进先出的原则,即现存入队列的数据要先取出,后存入队列的数据要后取出 2.数组模拟队列的思路 队列本身是有序列表,若使用数组结构来存储队列的数据,则队列数组的声明如下图,其中maxsize是该队列的...原创 2020-01-13 19:40:46 · 434 阅读 · 0 评论