数据结构
文章平均质量分 64
使用java实现
Kygo Chen
你可以成为你想成为的任何人
展开
-
【二叉排序树详解】二叉排序树的创建、节点查找和删除-数据结构08
什么是二叉排序树(BST)二叉排序树(Binary Sort Tree),又称二叉查找树(Binary Search Tree),亦称二叉搜索树。在一般情况下,查询效率比链表结构要高。 要求:对于二叉树中的任何一个非叶子结点,要求左子结点比当前结点值小,右子结点比当前结点值大。原创 2021-12-12 10:54:57 · 1730 阅读 · 0 评论 -
【赫夫曼树详解】赫夫曼树简介及java代码实现-数据结构07
定义:赫夫曼树是n个带权叶子结点构成的所有二叉树中,带权路径长度(WPL)最小的二叉树。叶子结点的带权路径:叶子结点权值*到根节点的路径长度(叶结点的层数)树的带权路径长度WPL(weighted path length):树中所有叶子结点的带权路径长度之和。原创 2021-12-05 15:46:22 · 354 阅读 · 0 评论 -
【线索二叉树详解】数据结构06(java实现)
1. 线索二叉树简介定义: 在二叉树的结点上加上线索的二叉树称为线索二叉树。二叉树的线索化: 对二叉树以某种遍历方式(如先序、中序、后序或层次等)进行遍历,使其变为线索二叉树的过程称为对二叉树进行线索化。现在我们来计算一下任意一颗二叉树有多少个空的指针域假设有n个结点,一个结点有2个指针域(指向左右子节点),一共就有2n个结点除了第一个结点不需要父节点指向,其余所有节点均需要指针,所以有n-1个已经使用的指针域剩下:2*n-(n-1)=n+1结论:任意二叉树的空余指针域为n+1原创 2021-12-04 17:04:11 · 910 阅读 · 0 评论 -
【二叉树详解】二叉树的创建、遍历、查找以及删除等-数据结构05
二叉树1. 二叉树简介定义: 每一个结点的子节点数量不超过 2二叉树的结点分为:左节点、右节点满二叉树: 每个结点都有两个子结点的二叉树(除了叶子结点外)完全二叉树: 除去最后一层,是一个满二叉树,并且最后一层结点左连续(从左到右,从上到下,依次编号1,2,3,4…,这样的编号和满二叉树一一对应的二叉树叫完全二叉树)2. 链式存储的二叉树2.1 创建二叉树思路: 首先必须有一个BinaryTree 二叉树的类-用于设置根节点(也可以是一颗空树) 其次需要结点原创 2021-11-21 17:15:51 · 1142 阅读 · 0 评论 -
【两分钟带你了解树】数据结构04-树结构的概述
树结构1. 树结构概述1.1 什么是树上面就是一棵树,简单来讲就是各个节点 “一对多” 的关系(我们可以看成一颗倒置的树)1.2 为什么要使用树线性结构中删除元素和查找元素的缺陷,在树结构中能得到解决如:线性结构中数组-虽然查找元素方便快捷(通过下标),但是删除元素非常麻烦 链表-虽然删除元素和插入元素方便,但是查找元素非常不方便1.3 树的基本概念根节点:树中唯一一个没有父节点的节点(一般最上面一个就是根节点)双亲节点:俗称父原创 2021-11-13 17:39:51 · 269 阅读 · 0 评论 -
【链表-(单链表、循环链表、双向链表)】数据结构与算法03-java实现
链表所谓链表,通俗的说就是用一条链把数据都串起来前面我们提到的都是顺序存储结构,这里的链表属于链式存储结构什么是链表呢,我们直接上图[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fX33FxaQ-1636296184150)(C:\Users\Administrator\Desktop\Java\1. 基础\1-5. 数据结构和算法\img\单链表.png)]我们可以看到:每个链表结点至少包含两个元素:数据data、地址next(指向下一个数据)4.1 单链表代原创 2021-11-08 14:20:52 · 351 阅读 · 0 评论 -
【栈和队列】数据结构02-(java实现)
1.栈1.1 简介什么是栈呢?大家可以把它想象成一个狭窄的盒子,我们往里面放东西,每次取出时,只能取出最后放进去的(最上面一个),总结来讲就是 “先进后出”,如下图:特点:先进后出,每次只能取得栈顶元素1.2 栈的实现思想:使用数组来实现栈进栈push时,依次往数组后追加元素即可(和前面讲过的数组操作一样)在出栈pop时,我们每次都取最后一个元素相关操作:进栈push 、出栈pop 、获取栈顶元素peek 、判断为空isEmpty代码:public class MyStack {原创 2021-11-07 22:38:05 · 143 阅读 · 0 评论 -
【动态数组】数据结构01-(java实现)
1. 数组数组的局限性:长度固定,一旦定义不能修改1.1 数组元素的增加核心思想:创建一个新数组,长度为原数组+1,将原数组赋值到新数组,最后将增加的元素放到新数组最后一个位置,把新数组赋值给原数组。代码实现:import java.util.Arrays;public class ArrayAppend { //在数组末尾追加一个元素 public static void main(String[] args) { //解决数组长度不可变问题原创 2021-11-06 21:34:10 · 194 阅读 · 0 评论