数据结构数组,链表和红黑树

数组
  ~数组:Array,是有序的元素序列,数组是在内存中开辟一段连续的空间,并在此空间存放元素。就像是一排出租屋,有100个房间,从001到100每个房间都有固定编号,通过编号就可以快速找到租房子的人
简单的说,采用该结构的集合,对元素的存取有如下的特点︰
  ~查找元素快∶通过索引,可以快速访问指定位置的元素

 

 

 

数据结构_数组:
  ~查询快:数组的地址是连续的,我们通过数组的首地址可以找到数组,通过数组的索引可以快速查找某一个元素

  ~增删慢:数组的长度是固定的,我们想要增加/删除一个元素,必须创建一个新数组,把源数组的数据复制过来.

 

 

 

要把数组中索引是3的元素删除
必须创建一个新的数组长度是源数组的长度-1把源数组的其他元素复制到新数组中
在新数组的地址赋值给变量arr
源数组会在内存中被销毁(垃圾回收)

 

 

 

 

链表
  ~链表:linked list,由一系列结点node (链表中每一个元素称为结点)组成,结点可以在运行时i动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域

  ~我们常说的链表结构有单向链表与双向链表,那么这里给大家介绍的是单向链表。

    

 

 

 

简单的说,采用该结构的集合,对元素的存取有如下的特点︰
  ~多个结点之间,通过地址进行连接。例如,多个人手拉手,每个人使用自己的右手拉住下个人的左手,依次类推,这样多个人就连在一起了

  

 

 

 

~查找元素慢︰想查找某个元素,需要通过连接的节点,依次向后查找指定元素

~增删元素快︰
  ~增加元素:只需要修改连接下个元素的地址即可

单向链表:链表中只有一条链子.不能保证元素的顺序(存储元素和取出元素的顺序有可能不一致)

双向链表:链表中有两条链子,有一条链子是专门记录元素的顺序,是一个有序的集合

 

 

红黑树
  ~二叉树: binary tree ,是每个结点不超过2的有序树( tree ) 

简单的理解,就是一种类似于我们生活中树的结构,只不过每个结点上都最多只能有两个子结点

二叉树是每个节点最多有两个子树的树结构。顶上的叫根结点,两边被称作"左子树′和'右子树”

如图:

  

 

 

 

 

 

 

排序树/查找树     猜数字小游戏:1-100之间的数字,从5O开始猜,一下减去—半
在二叉树的基础上,元素是有大小顺序的
左子树小右子树大

 

 

红罴树:
特点:趋*于*衡树,查询的速度非常的快,查询叶子节点最大次数和最小次数不能超过2倍

 

 

约束:
1.节点可以是红色的或者黑色的2根节点是黑色的

3.叶子节点(空节点是黑色的

4.每个红色的节点的子节点都是黑色的

5.任何一个节点到其每一个叶子节点的所有路径上黑色节点数相同

 

 

 

 

     

 

posted @   夫君  阅读(135)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示