![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构(Java)
jQueryZK
本科在校软件专业学生,正在奔向程序员的道路上
展开
-
数据结构(Java实现)-图解红黑树(R-B-Tree)
1、红黑树的基本介绍红黑树(Red-Black Tree,简称R-B Tree),它一种特殊的二叉查找树。红黑树满足二叉查找树的特征:任意一个节点所包含的键值,大于等于左孩子的键值,小于等于右孩子的键值。红黑树的特性:1、每个节点上都有存储位表示节点的颜色,颜色是红(Red)或黑(Black)。2、根节点是黑色。3、如果一个节点是红色的,则它的子节点必须是黑色的。4、.从根节点到叶节点或空子节点的每条路径,必须包含相同数目的黑色节点(即相同的黑色高度)5、每个叶子节点是黑色。 [注意:这里原创 2020-09-21 15:36:06 · 1609 阅读 · 0 评论 -
数据结构(Java实现)-图解平衡二叉树(AVL树)
1、问题引入给定一个数列{1,2,3,4,5,6},要求创建一颗二叉排序树(BST), 并分析问题所在分析已经构建的BST树存在的问题:左子树全部为空,从形式上看,更像一个单链表.插入速度没有影响查询速度明显降低(因为需要依次比较), 不能发挥BST树的优势,因为每次还需要比较左子树,其查询速度比单链表还慢解决方案-平衡二叉树(AVL)2、平衡二叉树介绍平衡二叉树:也叫平衡二叉搜索树(Self-balancing binary search tree)又被称为AVL树, 可以保证查询效原创 2020-09-17 13:29:09 · 1960 阅读 · 0 评论 -
数据结构(Java实现)-图解二叉排序树(二叉查找树、二叉搜索树)
二叉排序树1、二叉排序树的介绍原创 2020-09-16 13:56:13 · 2169 阅读 · 0 评论 -
数据结构(Java实现)-图解哈夫曼树(最优二叉树)与哈夫曼编码原理(使用哈夫曼编码压缩并解压数据)
1、哈夫曼树1.1哈夫曼树基本介绍给定n个权值作为n个叶子结点,构造一棵二叉树,若该树的带权路径长度(wpl) 达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)路径:在一棵树中,从一个结点往下可以达到的孩子或孙子结点之间的通路,称为路径路径长度:通路中分支的数目称为路径长度。若规定根结点的层数为1,则从根结点到第L层结点的路径长度为L-1结点的权:若将树中结点赋给一个有着某种含义的数值,则这个数值称为该结点的权结点的带权路径长度:从根结点到该结点之间的路径长度与原创 2020-09-16 09:22:24 · 2820 阅读 · 0 评论 -
数据结构(Java实现)-顺序存储二叉树与线索化二叉树
1、顺序存储二叉树原创 2020-09-13 14:10:01 · 2510 阅读 · 0 评论 -
数据结构(Java实现)-详谈树与二叉树结构
1、树1.1树的基本介绍树(tree)是一种抽象数据类型(ADT),用来模拟具有树状结构性质的数据集合。它是由n(n>0)个有限节点通过连接它们的边组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。①、节点:上图的圆圈,比如A,B,C等都是表示节点。节点一般代表一些实体,在java面向对象编程中,节点一般代表对象。②、边:连接节点的线称为边,边表示节点的关联关系。一般从一个节点到另一个节点的唯一方法就是沿着一条顺着有边的道路前进。在Jav原创 2020-09-11 21:10:09 · 2734 阅读 · 0 评论 -
数据结构(Java实现)-详谈哈希表(Hash Table)
1、哈希表介绍散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。(哈希表的底层是数组)实现哈希表的两种方法:1、数组+链表2、数组+红黑二叉树2、哈希函数H(k)哈希函数:建立起数据元素的存放位置与数据元素的关键字之间的对应关系的函数。即使用哈希函数可将被查找的键转换为数组的索引。理想情况下它应该运算简单并且保证任原创 2020-09-08 17:34:44 · 5291 阅读 · 2 评论 -
数据结构(Java实现)-详解栈(实现中缀表达式计算器、逆波兰计算器 中缀表达式转逆波兰表达式过程)
1、栈(stack)的介绍栈是一个先入后出的有序列表。 栈是限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。允许插入和删除的一端为变化端,称为栈顶(Top),另一端为固定端,称为栈底(Bottom)。 根据栈的定义可知,最先放入栈中的元素在栈底,最后放入的元素在栈顶,而删除元素刚好相反,最后放入的元素最先删除,...原创 2020-08-19 17:23:25 · 6449 阅读 · 0 评论 -
数据结构(Java实现)-单链表常见面试题(新浪、百度、腾讯)
1、求单链表中有效节点个数思路:遍历链表获取单链表的节点的个数(如果是带头节点的链表,不能统计头节点)public static int getLength(LinkNode head){ if(head.next==null) { return 0;//空链表 } int length=0; //定义一个辅助的变量,这里我们没有统计头节点 LinkNode cur = head.next; while(cur != nul原创 2020-08-14 21:26:51 · 8795 阅读 · 0 评论 -
数据结构(Java实现)-单链表(单链表实现学生成绩管理系统)
1、链表1.1链表的基本介绍链表是以节点的方式来存储,是链式存储,从图中发现,链表的各个节点不一定是连续存储 每个节点包含data域:存储数据,next域:指向下一个节点 链表分带头节点的链表和没有头节点的链表,根据实际的需求来确定没有头节点单链表:也就是phead只是一个引用(指针),指向链表的第一个节点有头节点单链表:phead是头节点只不过头节点的data不保存信息基本概念:链表的每个元素称为一个节点,每个节点都可以存储在内存中的不同的位置,为了表示每个元素与后继元素原创 2020-08-14 15:33:55 · 17848 阅读 · 0 评论 -
数据结构(Java实现)-详谈队列
1、队列介绍队列是一个有序列表,可以用数组(顺序存储)或是链表(链式存储)来实现 遵循先入先出(从队尾进,队首出)的原则。即:先存入队列的数据,要先取出,后存入的要后取出。2、队列的顺序存储(数组实现)队列本身是有序列表,若使用数组的结构来存储队列的数据,则队列数组的声明如下图, 其中 maxSize 是该队列的最大容量。 因为队列的输出、输入是分别从前后端来处理,因此需要两个变量 front及 rear分别记录队列前后端的下标,front 会随着数据输出而改变,而 rear则是随着数据输入而改原创 2020-08-11 17:05:56 · 9774 阅读 · 1 评论 -
数据结构(Java实现)- 稀疏sparsearray数组
1、先看一个实际的需求2、基本介绍3、实现3.1二维数组转稀疏数组3.2稀疏数组转二维数组4、代码实现:1、先看一个实际的需求 在编写的五子棋程序中,有存盘退出和续上盘的功能。这时候就要求我们要使用二维数组来记录棋盘,如下图所示:在上图的二维数组中用1表示黑棋,用2表示蓝棋分析问题:我们可以发现该二维数组的很多值是默认值0,因此记录了很多没有意义的数据。这时候就需要用稀疏数组对这个二维数组进行压缩。2、基本介绍当一个数组中大部分元素为0,或者为同一...原创 2020-08-09 21:44:35 · 9392 阅读 · 2 评论