![](https://img-blog.csdnimg.cn/direct/1f2b0fd7be9d4042beaa7cfc3070dfb7.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构及基本知识
文章平均质量分 92
逐步讲述一些数据结构相关的知识
robin_suli
普通it大学生一枚,会在博客分享总结知识
展开
-
二叉树基础及实现(二,加经典OJ)
(isBalanced(root.left) && isBalanced(root.right),去递归每一棵树的左右子树)时会重复去算高度。把二叉树元素放入队列中,如果最后队列里全部是元素,“null”,则该二叉树就是完全二叉树。这里和上面方法一样,只是在出栈时候,放入链表或者顺序表,又或者打印。时间复杂度为O(N^2,N的平方)原创 2024-07-25 10:36:58 · 627 阅读 · 16 评论 -
二叉树基础及实现(一)
(2). 除根结点外,其余结点被分成M(M > 0)个互不相交的集合T1、T2、......、Tm,其中。有一个特殊的结点(最上面的根,整个树的根),称为根结点,根结点没有前驱结点。,当且仅当其每一个结点都与深度为K的满二叉树中编号从0至n-1的结点。从根开始定义起,根为第1层,根的子结点为第2层,以此类推。若一个结点含有子结点,则这个结点称为其子结点的父结点;二叉树的链式存储是通过一个一个的节点引用起来的,一个结点含有的子树的根结点称为该结点的子结点;具有n个结点的完全二叉树的深度k为,(原创 2024-07-19 19:12:39 · 1032 阅读 · 9 评论 -
栈和队列深入浅出
因为LinkedList实现 Queu接口。只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈。主要就是定义两个队列做到 "先进后出。须实例化LinkedList的对象。写peek方法时,定义一个中间变量。只允许在一端进行插入数据操作。进行删除操作的一端称为队头。进行插入操作的一端称为队尾。定义两个栈做到 "先进先出。在另一端进行删除数据操作。压栈:栈的插入操作叫做。原创 2024-07-17 22:19:45 · 630 阅读 · 12 评论 -
对LinkedList ,单链表和双链表的理解
3.从堆上申请出来空间,是有它的分配规律和策略的,两次申请出来的可能连续也可能不续。从后往前用slow走,因为偶数节点,fast指针会走到null,无法往前走。六.ArrayList和LinkedList的区别。第一次相遇点,到入口点的距离,等于起始点到入口点的距离。四.LinkedList的模拟实现:无头双向链表实现。就比单链表多了一个,可以指向前一个节点的引用域,并且。回文时偶数情况下,A的下一个节点是slow节点,四.LinkedList的模拟实现。这个时候就要直接返回ture。原创 2024-07-14 17:26:57 · 784 阅读 · 15 评论 -
ArrayList与顺序表
依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。ArrayList,继承了很多类,并且扩展了很多接口使用,自身也有很多方法。底层是一段连续的空间,并且可以动态扩容,是一个动态类型的顺序表。3.真正扩容之前检测是否能扩容成功,防止太大导致扩容失败。不是线程安全的,在单线程下可以使用,在多线程中可以选择。:for循环+下标、foreach、使用迭代器。超过预估1.5倍大小,则按照用户所需大小扩容。检测是否真正需要扩容,如果是。物理地址连续的存储单元,预估需要库容的大小,原创 2024-06-14 20:03:12 · 1228 阅读 · 22 评论 -
数据结构之初识泛型
1.实现一个类,类中包含一个数组成员,使得数组中可以存放任何类型的数据,也可以根据成员方法返回数组中某个下标的值?泛型目前为止的优点:数据类型参数化,编译时自动进行类型检查和转换。只能使用具体的类型: 要么是基本类型,要么是自定义的类。问题是:1.如果数据太多,每次返回,向下转型太麻烦。注意:我们不要自己去使用裸类型,裸类型是为了。Comparable接口,可以直接使用。静态行为,不依赖对象,可以直接用类名调用。,这种刻板的限制对代码的束缚就会很大。表示当前类是一个泛型类。对类型实现了参数化。原创 2024-06-08 14:48:13 · 1146 阅读 · 12 评论 -
初识JAVA中的包装类,时间复杂度及空间复杂度
在计算机发展的早期,计算机的存储容量很小。所以对空间复杂度很是在乎。算机的存储容量已经达到了很高的程度。所以我们如今已经不需要再特别关注一个算法的空间复杂度。实际中我们计算时间复杂度时,我们其实并不一定要计算精确的执行次数。共2n+10,根据大O渐进法,时间复杂度为:O(n)。2^x/1 ==(1)找到的数字。, 其余基本类型的包装类都是首字母大写。,为了在泛型代码中可以支持基本类型,的空间,因为这个也没太大意义,所以。每次开辟,比之前少的一块空间。在修改后的运行次数函数中,空间复杂度算的是变量的个数。原创 2024-06-04 22:18:01 · 980 阅读 · 12 评论