学习日记(数据结构简介)

学习日记(数据结构简介)

  • 数据结构是计算机底层存储、组织数据的方式,是指数据相互之间是以什么方式排列在一起的。
  • 通常情况下,精心选择的数据结构可以带来更高的运行或存储效率
  • 常见的数据结构有:栈、队列、数组、链表、二叉树、二叉查找树、平衡二叉树、红黑树等等。

1. 栈

执行特点:后进先出,先进后出。

2. 队列

执行特点:先进先出,后进后出

3. 数组

特点

  • 查询速度快:通过索引查询速度快,查询任意数据耗时相同
  • 删除效率低:将原始数据删除,同时后面每个数据前移。
  • 添加效率极低:先将添加位置后的每个数据后移,再添加元素。

4. 链表

特点

  • 链表中的元素是在内存中不连续存储的(游离存储),每个元素结点包含数据值下一个元素的地址

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

  • 链表增删相对快,但是也需要先查询到,再增删。

链表分为单向链表双向链表,其中双向链表增删首尾元素的速度最快。

5. 二叉树

名词

  • 根节点:只能有一个根节点,每个节点最多支持两个直接子节点。
  • 节点的度:节点拥有的子树的个数,二叉树的度不大于 2,叶子节点度为 0 的节点也成为终端节点
  • 高度:叶子节点的高度为 1,叶子节点的父节点高度为 2,以此类推,根节点的高度最高。
  • :根节点在第一层,以此类推。
  • 兄弟节点:拥有共同父节点的节点互称为兄弟节点。

6. 二叉查找树

二叉查找树又称为二叉排序树二叉搜索树

特点

  • 每一个节点上最多有两个子节点。
  • 左子树上所有的节点的值都小于根节点的值。
  • 右子树上所有的节点的值都大于根节点的值。
  • 目的:提高检索数据的性能。

存在的问题:可能出现瘸子现象,导致查询的性能与单链表一样,查询速度变慢,如把 7,8,9,10,11 存入二叉查找树如图所示。

7. 二叉平衡树(平衡依据:左右子树高度差 ≤ 1)

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

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

  • 将查找二叉树变为平衡二叉树的策略:左旋或者右旋保证平衡。

8. 红黑树(平衡依据:红黑规则)

  • 红黑树是一种自平衡的二叉查找树,是计算机科学中的一种数据结构。
  • 1972 年出现时称为平衡二叉 B 数。1978 年被修改为红黑树。
  • 每一个节点可以是红或黑,红黑树不是通过高度平衡的,它的平衡是通过”红黑规则“进行实现的,目的:提高效率,减小运算步骤,增加数据增删改查的性能。
  • 红黑树增删改查的性能都很好

红黑规则

  • 每一个节点初始可以是红色或者黑色的(默认用红色效率高),根节点必须是黑色。
  • 如果一个节点没有子节点或者父节点,则该节点相应的指针属性为 Nil,这些 Nil 视为叶节点,叶节点是黑色的。
  • 如果某一个节点是红色,那么它的子节点必须是黑色(不能出现两个红色节点相连的情况)。
  • 对每一个节点,从该节点到其所有后代叶节点的简单路径上,包含相同数目的黑色节点。

举例:将 20,18,23,22,16,24,19,15,14 形成红黑树。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Sun 3285

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

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

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

打赏作者

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

抵扣说明:

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

余额充值