数据结构
文章平均质量分 85
各种数据结构的实现包含源代码与注解
¥小包
这个作者很懒,什么都没留下…
展开
-
二叉树中为什么n(0) = n(2) +1
????一、什么是二叉树二、n(0) = n(2) +1三、前中后遍历一、什么是二叉树1、二叉树基本形态一棵二叉树是结点的一个有限集合,该集合或者为空,或者是由一个根节点加上两棵别称为左子树和右子树的二叉树组成。二叉树的特点:每个结点最多有两棵子树,即二叉树不存在度大于 2 的结点。二叉树的子树有左右之分,其子树的次序不能颠倒,因此二叉树是有序树。2、两种特殊的二叉树满二叉树: 一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是满二叉树。也就是说,如果一个二叉树的层数为K,原创 2020-08-17 18:57:30 · 1848 阅读 · 0 评论 -
ArrayList和LinkedList最全面的异同点比较
????1、存储方式2、接口实现3、时间复杂度4、扩容方式5、线程安全吗6、使用场景1、存储方式首先,两个属于线性表。而ArrayList在底层是一个顺序表,采用数组的方式进行数据的存储,物理地址是连续的。LinkedList在底层是一个双向链表,物理存储结构是非连续的,数据元素的逻辑顺序是通过链表中的引用链接次序实现的 。2、接口实现ArrayList继承了AbstractList抽象类,实现了List、Connection、Iterable等接口;同时LinkedList也做到了,并且实现了De原创 2020-08-10 20:06:26 · 1111 阅读 · 0 评论 -
HashMap 中数组的 size 为什么必须是 2 的整数次幂?(index如何确定和高16bit ^ 低16bit)
.一、HashMap put操作的时候,index下标如何确定二、为什么要 高16位 ^ 低16位三、为什么数组的长度是2^n一、HashMap put操作的时候,index下标如何确定HashMap<String,Integer> map = new HashMap<>();map.put(“book”,1);HashMap为k-v模型,put的过程中,计算下标时,分为两步,首先对 key 进行 hash 操作,其次再通过hash值和数组长度-1进行&运算得到原创 2020-08-05 16:56:29 · 1243 阅读 · 3 评论 -
数据结构---二叉搜索树---Java二叉搜索树删除图示详解与创建增删查等操作(含详细源代码与图示注释)
二叉搜索树(Binary Search Tree)二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树:若它的左子树不为空,则左子树上所有节点的值都小于根节点的值若它的右子树不为空,则右子树上所有节点的值都大于根节点的值它的左右子树也分别为二叉搜索树注意:二叉搜索树中没有重复的元素BSTree的实现主要有如下3种方法:public boolean insert ( int val ) 参数:待插入元素val,功能:将元素插入到二叉树中构成二叉搜索树public原创 2020-05-29 18:04:54 · 565 阅读 · 1 评论 -
数据结构---单链表和双向链表----Java实现单链表及双向链表的创建与增删查改等9种操作(含详细源代码与注释)
单链表与双向链表单链表双向链表概念链表是一种物理存储结构上非连续存储结构,数据元素的逻辑顺序是通过链表中的引用链接次序实现的。分类实际中链表的结构非常多样,以下情况组合起来就有8种链表结构:单向、双向带头、不带头循环、非循环尽管以上情况组合起来非常之多,但是我们主要讨论的是两种:1、无头单向非循环链表2、无头双向非循环链表单链表单链表的实现主要有如下9种方法public void addFirst(int data) 参数:插入数据data。功能:头插法插入datap原创 2020-05-21 17:38:03 · 617 阅读 · 0 评论 -
数据结构---顺序表----Java实现顺序表的创建与增删查改等9种操作(含详细源代码与注释)
线性表线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串…线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。顺序表顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存...原创 2020-04-21 11:08:17 · 3403 阅读 · 0 评论