![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 70
衍方
这个作者很懒,什么都没留下…
展开
-
探究 — 二叉搜索树
二叉搜索树(Binary Search Tree)回顾与思考我们来思考这么一个问题,如何在n 个动态的整数中搜索某个整数?(查看其是否存在)看着还是很简单的,以动态数组存放元素,从第0个位置开始遍历搜索,运气好的话,第一个就找到了,运气差的话,可能找到最后都找不到,算一下的话平均时间复杂度是 O(n),数据规模大的话,是比较慢的再好一点的话,上一篇 二分查找及其变种算法 说到了,使用二分查找的话,效率是很高的,最坏时间复杂度:O(logn),不怕你数据规模大,但是我们要注意一点,这是一个动态的序列,原创 2020-09-19 02:39:48 · 429 阅读 · 1 评论 -
深入理解二叉树(超详细)
二叉树(Binary Tree)回顾在前面的文章 — 二叉树前奏中,我们对于二叉树的一些基本概念进行了回顾,同时对比了线性结构与树形结构,总结了一些常见的二叉树的性质,像二叉树,真二叉树,完全二叉树,以及满二叉树等等,但是,我们仅仅是在概念上对于二叉树有所了解,并没有进行编码工作,今天来完善一下这一步的操作直接进入二叉树的设计与编码,如果你对于二叉树的概念以及性质不了解的话,可以回去翻翻 二叉树前奏,熟悉一下,因为编码实际上就是对于二叉树性质的一个体现设计属性与节点首先,我们的二叉树是用来存放元原创 2020-09-17 23:53:28 · 19444 阅读 · 11 评论 -
二叉树前奏
前言回顾碎语在前面的数据结构学习中,无论是以顺序结构存储的数组还是链式存储结构的链表、栈、队列等,实际上都可以归类成线性结构,今天回忆另外一种数据结构,树形结构,没错,就是生活中的那种树,要倒过来的那种。以树干的分支数量为准,可以将树分为二叉树与多叉树,二叉树是我们要研究的重点生活中的树形结构也有很多,例如公司的股权图,文件目录等等,使用树形结构可以大大提高效率,同时树形结构也是被广泛应用于底层结构,例如数据库索引树形结构树的概念**节点:**根节点、父节点、子节点、兄弟节点空树:一棵原创 2020-09-14 16:47:57 · 329 阅读 · 0 评论 -
(超详细)动手编写 — 栈、队列 ( Java实现 )
前言栈概念什么是栈?**栈 **:是一种特殊的线性表,只能在一端进行操作入栈:往栈中添加元素的操作,一般叫做push出栈:从栈中移除元素的操作,一般叫做pop,出栈(弹出栈顶元素)注意:这里说的"栈"与内存中的"栈空间"是两个不同的概念栈的结构相比于数组和链表而言,栈同样是存储相同类型数据的线性数据结构,只不过栈的受限性比较大,比如说:栈只有一端是开放的(栈顶),所有的数据操作都是在这一端进行的,基于这个特性,有了所谓的**“后进先出(Last In First Out, LIFO)”**原创 2020-09-13 21:13:40 · 250 阅读 · 0 评论 -
自定义链表(Java实现)
Java实现自定义链表前言在前面的实现的动手写个Java动态数组里,虽然对于用户而言,看是实现了动态扩容的功能,实际上,只是依托底层写的方法ensureCapacity在数组容量不足的时候,对重新申请一个原数组1.5倍容量的新数组,再将原有数组中存放的元素复制到新数组来,数组指针指向新数组,从根本上来说,这并不是真正的动态。同时,数组的拷贝,以及数组申请的空间并未全部存储元素,会降低效率,也会造成内存空间的浪费,但这对于链表来说,并不是个问题,链表是做到了用多少内存就申请多少内存空间,这才是真正的动态原创 2020-09-09 02:30:50 · 1364 阅读 · 0 评论 -
Java实现自定义动态数组
Java实现自定义动态数组数组基础回顾1、数组是一种常见的数据结构,用来存储同一类型值的集合2、数组就是存储数据长度固定的容器,保证多个数据的数据类型要一致3、数组是一种顺序存储的线性表,所有元素的内存地址是连续的4、例如:new 一个int基本类型的数组arrayint[] array = new int[]{11,22,33};5、数组的优势与劣势数组具有很高的随机访问能力,通过数组下标就可以读取对应的值数组在插入与删除元素时,会导致大量的元素移动数组的长度是固定的原创 2020-09-04 22:41:44 · 2228 阅读 · 1 评论