常用的数据结构

目录

一、数据结构概述、栈、队列    

1、数据结构概述

2、常见的数据结构

3、栈

4、队列

二、数组   

三、链表     

四、二叉树、 二叉查找树    

1、二叉树概述

2、二叉树的特点

3、二叉查找树的概念

4、二叉查找树的特点

5、二叉查找树的规则

五、平衡二叉树    

1、平衡二叉树的概念

2、平衡二叉树的要求

3、平衡二叉树在添加元素后可能导致不平衡的解决方法

3.1、左左

3.2、左右

3.3、右右

3.4、右左

六、红黑树

1、红黑树概述

2、红黑规则

3、红黑的优点


一、数据结构概述、栈、队列    

1、数据结构概述

数据结构是计算机底层存储、组织数据的方式。是指数据相互之间是以什么方式排列在一起的。

通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率

2、常见的数据结构

栈、队列、数组、链表、二叉树、二叉查找树、平衡二叉树、红黑树等等 

3、栈

特点一:后进先出,先进后出。

特点二:数据进入栈模型的过程称为:压/进栈。

特点三:数据离开栈模型的过程称为:弹/出栈。

4、队列

特点一:先进先出,后进后出。

特点二:数据从后端进入队列模型的过程称为:入队列。

特点三:数据从前端离开队列模型的过程称为:出队列

二、数组   

特点:

查询速度快:查询数据通过地址值和索引定位,查询任意数据耗时相同。(元素在内存中是连续存储的)

删除效率低:要将原始数据删除,同时后面每个数据前移。

添加效率极低:添加位置后的每个数据后移,再添加元素。

三、链表     

1、特点

链表中的元素是游离存储的,每个元素节点包含数据值和下一个元素的地址。

链表查询慢。无论查询哪个数据都要从头开始找。

 链表增删相对快。

 2、种类

单向列表

 双向列表

四、二叉树、 二叉查找树    

1、二叉树概述

2、二叉树的特点

只能有一个根节点:每个节点最多支持2个直接子节点。

节点的度: 节点拥有的子树的个数,二叉树的度不大于2 叶子节点 度为0的节点,也称之为终端结点。

高度:叶子结点的高度为1,叶子结点的父节点高度为2,以此类推,根节点的高度最高。

层:根节点在第一层,以此类推

兄弟节点 :拥有共同父节点的节点互称为兄弟节点

3、二叉查找树的概念

二叉查找树又称二叉排序树或者二叉搜索树。为了提高检索数据的性能。

4、二叉查找树的特点

4.1,每一个节点上最多有两个子节点。

4.2,左子树上所有节点的值都小于根节点的值。

4.3,右子树上所有节点的值都大于根节点的值。

5、二叉查找树的规则

5.1、小的存左边      

5.2、大的存右边      

5.3、一样的不存

五、平衡二叉树    

1、平衡二叉树的概念

平衡二叉树是在满足查找二叉树的大小规则下,让树尽可能矮小,以此提高查数据的性能。

2、平衡二叉树的要求

任意节点的左右两个子树的高度差不超过1,任意节点的左右两个子树都是一颗平衡二叉树。

3、平衡二叉树在添加元素后可能导致不平衡的解决方法

3.1、左左

当根节点左子树的左子树有节点插入,导致二叉树不平衡。(右旋)

3.2、左右

当根节点左子树的右子树有节点插入,导致二叉树不平衡。(先右旋在左旋)

3.3、右右

当根节点右子树的右子树有节点插入,导致二叉树不平衡。(左旋)

3.4、右左

当根节点右子树的左子树有节点插入,导致二叉树不平衡。(先左旋再右旋)

六、红黑树

1、红黑树概述

红黑树是一种自平衡的二叉查找树,是计算机科学中用到的一种数据结构。

1972年出现,当时被称之为平衡二叉B树。1978年被修改为如今的"红黑树"。

每一个节点可以是红或者黑;红黑树不是通过高度平衡的,它的平衡是通过“红黑规则”进行实现的。

2、红黑规则

每一个节点或是红色的,或者是黑色的,根节点必须是黑色。

如果某一个节点是红色,那么它的子节点必须是黑色(不能出现两个红色节点相连的情况)。

对每一个节点,从该节点到其所有后代叶节点的简单路径上,均包含相同数目的黑色节点。

3、红黑的优点

红黑树增删改查的性能都很好。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

꧁༺๑小王不是程序员๑༻꧂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值