
数据结构
文章平均质量分 56
贝多芬也爱敲代码
哇!好多不了解的,还是要多啃得点 ^0^~
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
数据结构:红黑树
定义:红黑树是一种特殊的二叉查找树,而且也包含了二叉平衡树的概念,防止二叉树出现畸形的情况红黑树规则图示代码实现public class RBTree<T extends Comparable<T>> { private RBTNode<T> mRoot; // 根结点 private static final boolean ...原创 2019-09-17 14:58:48 · 96 阅读 · 0 评论 -
红黑树和平衡二叉树的区别
红黑树:每个节点都有一个颜色属性,可以是红色或黑色。在树中没有任何两个相邻的节点是同色的,即父节点和子节点颜色不同。AVL树:每个节点的左子树和右子树的高度最多差1,即平衡因子的绝对值不超过1。红黑树和AVL树各有优势,选择使用哪一种取决于具体的应用场景和性能需求。原创 2024-07-21 14:12:30 · 221 阅读 · 0 评论 -
数据结构学习笔记:(三)栈和队列
栈和队列称为操作受限的线性表。原创 2021-12-17 16:03:03 · 576 阅读 · 0 评论 -
数据结构:跳跃表
定义跳跃表(skiplist)是一种随机化(随机提高层次)的数据结构,是一种可以于平衡树媲美的层次化链表结构——查找、删除、添加等操作都可以在对数期望时间下完成.实现public class SkipListNode <T> { public int key; public T value; /** * 上下左右 四个指针 */ public SkipListNode<T> up, down, left, right;原创 2020-06-08 17:11:24 · 259 阅读 · 1 评论 -
数据结构:二叉堆
定义: 二叉堆顾名思义:是通过二叉树来表示的堆,而且这个二叉树需要满足完全二叉树的规则。分类:最大堆(最大的值在根节点上)最小堆(最小值在根节点上)基础概念(完全二叉树):(1)这个二叉堆是由数组实现的,可以想象的到下标的重要性。(2)任何一个节点,他的子节点的值分别为2n+1(左节点),或者2n+2(右节点)。(3)也就是说任何一个节点的父节点的值为(n-1)/2(4)堆上面的值是依...原创 2019-09-17 15:38:37 · 167 阅读 · 0 评论 -
数据结构:二叉查找树(BST)
定义:又叫二叉搜索树,它是一种特殊的二叉树,如果它的任意节点的左右节点存在,则它的左子树均小于这个节点,右节点均大于这个节点代码实现定义这个树的属性public class BSTree<T extends Comparable<T>> { private BSTNode<T> mRoot; // 根结点 public class...原创 2019-09-16 22:20:05 · 346 阅读 · 0 评论 -
数据结构:String
前言:众所周知String是我们在Java中最常用的类,他的底层实现是Char数组一:String的实现1.1 String s = “helloJava!”//直接给s赋值一个常量1.2 String s1 = new Sttring(“helloJava!”)//在堆中实现一个实例对象,把引用赋值给s1二: String的底层操作原理在操作这个String时候,比如拼接一个字符时,...原创 2019-09-16 16:25:08 · 1374 阅读 · 0 评论 -
数据结构:队queue
定义:队列是一种线性结构,遵循先进先出(FIFO)规则,并且只能在队前删除,对尾插入。代码实现所以实现队列只需要提供队前删除的方法和对尾插入的方法可以通过数组实现,也可以通过链表实现,JDK中ArrayDeque是通过数组实现的队列(双向队列),LinkedList,则是通过双向链表实现的队列(可以作为栈来看)具体实现略...原创 2019-09-15 21:53:11 · 151 阅读 · 0 评论 -
数据结构:栈Stack
定义:栈是一种数组,但是它遵守先进后出(FILO)的原则数据结构(JDK实现的是java.util.Stack):Java中栈的通过vector实现的,所以栈也是一种数组。栈的操作很简单,push()压栈,pop()出栈,peek()返回栈顶数值实现属性:对象数组(可以使用泛型数组T[]),数组长度方法:构造方法(参数,传入的数据类型,长度),push()方法:调用的是Vecto...原创 2019-09-15 20:45:20 · 162 阅读 · 0 评论 -
数据结构:线性表
定义:它是具有相同类型的n(n≥0)个数据元素组成的有限序列。分类:数组,单向链表,双向链表Java实现双向链表定义双向链表类(JDK的实现为java.util.LinkedList)属性:头结点(类型 节点类型),节点数量(int ,头结点不算在节点数量内),节点类(这个类时链表的内部类,也就是头结点的类型)方法:查找节点(参数 index’索引:从0~节点数量-1’,分为正向查找...原创 2019-09-15 19:52:07 · 188 阅读 · 0 评论 -
数据结构:哈希表
(1)哈希函数,来确定该键所对应的确定数值(这个数值来标识数组的下标),且不能与其他建所生成的数值重复(不然就会出现哈希冲突)。(2)数组,也就是哈希表,这个数组是用来存储与key对应的数值,通过使用哈希函数计算出入的key值,得到确定的数组下标,于是就向这个下标处存值,查找数据时,通过计算输入的Key值,得到下标,直接去这个下标处的数组拿值,这也是快速查找的原因。(2)较小的填装因子:当前数组中元素的个数 / 数组长度=填装因子,尽量的减少了不同的Key得到相同的下标值。HashTable中的get()原创 2019-09-09 11:07:55 · 293 阅读 · 1 评论