数据结构数组,链表和红黑树
数组
~数组:Array,是有序的元素序列,数组是在内存中开辟一段连续的空间,并在此空间存放元素。就像是一排出租屋,有100个房间,从001到100每个房间都有固定编号,通过编号就可以快速找到租房子的人
简单的说,采用该结构的集合,对元素的存取有如下的特点︰
~查找元素快∶通过索引,可以快速访问指定位置的元素
数据结构_数组:
~查询快:数组的地址是连续的,我们通过数组的首地址可以找到数组,通过数组的索引可以快速查找某一个元素
~增删慢:数组的长度是固定的,我们想要增加/删除一个元素,必须创建一个新数组,把源数组的数据复制过来.
要把数组中索引是3的元素删除
必须创建一个新的数组长度是源数组的长度-1把源数组的其他元素复制到新数组中
在新数组的地址赋值给变量arr
源数组会在内存中被销毁(垃圾回收)
链表
~链表:linked list,由一系列结点node (链表中每一个元素称为结点)组成,结点可以在运行时i动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域
~我们常说的链表结构有单向链表与双向链表,那么这里给大家介绍的是单向链表。
简单的说,采用该结构的集合,对元素的存取有如下的特点︰
~多个结点之间,通过地址进行连接。例如,多个人手拉手,每个人使用自己的右手拉住下个人的左手,依次类推,这样多个人就连在一起了
~查找元素慢︰想查找某个元素,需要通过连接的节点,依次向后查找指定元素
~增删元素快︰
~增加元素:只需要修改连接下个元素的地址即可
单向链表:链表中只有一条链子.不能保证元素的顺序(存储元素和取出元素的顺序有可能不一致)
双向链表:链表中有两条链子,有一条链子是专门记录元素的顺序,是一个有序的集合
红黑树
~二叉树: binary tree ,是每个结点不超过2的有序树( tree )
简单的理解,就是一种类似于我们生活中树的结构,只不过每个结点上都最多只能有两个子结点
二叉树是每个节点最多有两个子树的树结构。顶上的叫根结点,两边被称作"左子树′和'右子树”
如图:
排序树/查找树 猜数字小游戏:1-100之间的数字,从5O开始猜,一下减去—半
在二叉树的基础上,元素是有大小顺序的
左子树小右子树大
红罴树:
特点:趋*于*衡树,查询的速度非常的快,查询叶子节点最大次数和最小次数不能超过2倍
约束:
1.节点可以是红色的或者黑色的2根节点是黑色的
3.叶子节点(空节点是黑色的
4.每个红色的节点的子节点都是黑色的
5.任何一个节点到其每一个叶子节点的所有路径上黑色节点数相同
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)