![](https://img-blog.csdnimg.cn/d3fa3a7ad8424c279493d713b9d54866.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构
文章平均质量分 78
数据结构
松仔log
初出茅庐的程序员
展开
-
数据结构——数组和链表
数组和链表数组和链表是什么?数组实现基本数组完整数组链表实现基本链表数组和链表是什么?数组是将元素顺序存储的的数据结构,查找快增删慢而链表是将元素链式存储的数据结构,查找慢增删快数组实现基本数组在Java中基本数组是由内部实现,利用数据类型+[]定义(不算严格意义上的数组,其只是开辟了一片连续的存储空间,每个下标指向对应的空间,只有存取操作)int[] a;String[] b;完整数组以下只完成了对数组简单的增删改查,其他功能如对下标的判断、扩容等功能可具体看ArrayList或Ve原创 2021-12-21 17:27:25 · 437 阅读 · 0 评论 -
数据结构——栈和队列
栈和队列栈和队列是什么?栈实现数组栈队列实现数组队列栈和队列是什么?栈是先进后出的数据结构队列是先进先出的数据结构栈实现数组栈class MyArrayStack<E> { private int size; private Object[] array; MyArrayStack() { array = new Object[10]; } public E pop() { Object o = array[si原创 2021-12-22 14:45:42 · 424 阅读 · 0 评论 -
数据结构——链表数组
链表数组链表数组是什么?链表数组实现链表数组是什么?链表数组是由链表构成的数组,即数组每一个元素都是链表链表数组实现getBucket()根据hashcode获取桶数Node数组元素节点put()获取桶数,判断桶里是否有元素若无则存到桶内若有则循环判断当前key是否存在,若存在则覆盖value,不存在则进行链接到末尾remove()获取桶数,桶里是否有元素,若无则直接返回null,若有则再判断第一个元素是否是要删除的元素若是则断开头节点,让下一个元素成为头节点若不是则循环遍历原创 2021-12-23 14:11:32 · 6738 阅读 · 2 评论 -
数据结构——树
树树是什么?树的特点专有名词树和图的区别树的分类树实现普通树三级目录树是什么?树是由上往下具有层次结构的数据结构树的特点每个节点都只有有限个子节点或无子节点没有父节点的节点称为根节点每一个非根节点有且只有一个父节点除了根节点外,每个子节点可以分为多个不相交的子树树里面没有环路专有名词节点的度:一个节点含有的子树的个数称为该节点的度树的度:一棵树中,最大的节点度称为树的度叶节点或终端节点:度为零的节点非终端节点或分支节点:度不为零的节点父节点:若一个节点含有子节点,则这个节点原创 2021-12-28 19:42:37 · 565 阅读 · 0 评论 -
数据结构——完全二叉树和满二叉树
这里写目录标题完全二叉树实现(基于数组)原理代码实现测试代码完全二叉树、堆、优先级队列满二叉树完全二叉树实现(基于数组)完全二叉树除最后一层外,其它各层的节点数目均已达最大值,且最后一层所有节点从左向右连续地紧密排列,故使用数组实现不会造成空间浪费,相比递归更容易理解原理根据树的层次结构,可知若父节点从1开始,其左节点为2n,右节点为2n+1若父节点从0开始,其左节点为2n+1,右节点为2n+2若子节点为n,则其父节点为n-1/2代码实现getTreeNum()获取总节点数,返回si原创 2022-01-07 09:59:37 · 623 阅读 · 0 评论 -
数据结构——堆和优先级队列
堆堆和优先级队列是什么?最大堆实现最大堆测试堆和优先级队列是什么?堆是基于完全二叉树的自适应的数据结构,插入删除会重新调整堆内数据父节点大于等于其子节点的堆叫最大堆父节点小于等于其子节点的堆叫最小堆使用堆可以实现优先级队列,最大堆添加元素只能添加到尾部,删除元素只能删除头部,增删后会自动调整为最大堆最大堆实现MaxHeap() 创建指定元素数组,后面通过add构建最大堆MaxHeap(int[]) 根据传入数组构建最大堆add()、remove()增删元素后,需要重新构建最大堆m原创 2021-12-29 17:30:06 · 356 阅读 · 0 评论 -
数据结构——二叉搜索树
这里写目录标题二叉搜索树实现(基于链表)代码实现测试代码1测试代码2二叉搜索树实现(基于链表)除叶节点外,其余节点中左节点小于父节点,右节点大于父节点,其通常用于查找(二分搜索)代码实现add()方法:当根节点为空时,则新元素即为根节点,否则循环判断新元素放左边还是右边getParent():从根节点开始寻找指定节点的父节点MaxNode()和Max():获取最大的节点及其对应的值MinNode()和Min():获取最小的节点及其对应的值innerSearch()和search():递归找原创 2022-01-07 09:56:54 · 510 阅读 · 0 评论 -
数据结构——平衡二叉树(AVL树)
平衡二叉树平衡二叉树二级目录三级目录平衡二叉树当且仅当任何节点的两棵子树的高度差不大于1的二叉搜索树二级目录三级目录原创 2022-01-07 10:32:16 · 497 阅读 · 0 评论 -
数据结构——B树
B树B树2阶B树3阶B树B树B树是平衡二叉树的一般化,拥有多于两个子树,m阶B树具有以下特性:每个节点最多有m个子节点如果根不是唯一节点,则至少有两个子节点每个非叶子节点(除了根)具有至少⌈ m/2⌉子节点具有k个子节点的非叶节点包含k -1个键所有叶子都出现在同一水平,没有任何信息(高度一致,完美平衡)2阶B树3阶B树指最多有2个子节点的树,即二叉树3阶B树3阶B树指最多有3个子节点的树(也叫2-3树),根据以上性质可知1<= 根节点元素个数 <= 32<原创 2022-01-20 15:04:12 · 2174 阅读 · 0 评论 -
Robert Sedgewick左倾红黑树论文翻译
Left-leaning Red-Black Trees原创 2022-01-25 10:08:01 · 736 阅读 · 0 评论 -
数据结构——左倾红黑树
左倾红黑树左倾红黑树左倾红黑树和2-3树的等价变换网上的错误定义重要代码左右旋转变色递归变色插入删除左倾红黑树左倾红黑二叉查找树的基本思想是用标准的二叉查找树(完全由2-结点构成)和一些额外的信息(替换3-结点)来表示2-3树,其和2-3树是等价的树中的链接分为两种类型:红链接是用一个2-结点左链接另一个2-结点来表示一个3-结点,黑链接则是2-3树当中的普通链接红链接均为左连接(或者说红节点在左边也行,链接是节点的内部属性)没有任何一个结点同时和两条红链接相连该树是完美黑色链接平衡的,即任意原创 2022-01-26 19:26:19 · 1166 阅读 · 1 评论 -
数据结构——红黑树
红黑树红黑树二级目录三级目录红黑树红黑树是自平衡的二叉搜索树1.结点是红色或黑色。2.根结点是黑色。3.每个叶子结点都是黑色的空结点(NIL结点)。4 每个红色结点的两个子结点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色结点)5.从任一结点到其每个叶子的所有路径都包含相同数目的黑色结点。二级目录三级目录...原创 2022-02-07 22:16:59 · 1902 阅读 · 0 评论