数据结构基础学习

数据结构

栈:

  • 特点:先进后出,后进先出

队列:

  • 特点:从后端进去,前端出来。先进先出,后进后出

数组

  • 特点:查询快,增删慢的模型,添加效率也低下
  • 查询:通过地址值或者索引值来查找,查询任意数据时间相同
  • 删除效率低下:删除某一个数据,同时后面的数据前面移动
  • 添加效率低下:添加位置后每一个数据后移,在添加元素

链表

  • 每个数据都是一个结点(都是独立的对象,不连续),有一个地址值,包括元素和下一个结点的地址值。

  • 前一个结点记录后一个结点的地址值

  • 链表的查询比较慢,需要从头节点开始

  • 链表的增删快,只需要在对应位置,插上对应的数据的地址,和下一结点的地址值 即可



    树:

    • 节点:每一个元素

节点详解:

  • 度:每一个节点的子节点数量称为度
  • 二叉树:每个节点最多有2个分支的树就是二叉树
  • 树的高度:为层数。层数从上到下
  • 根节点:最上层为根节点
  • 根节点的左子树:(蓝色虚线部分)
  • 根节点的右子节点:(红色实线部分)
  • 二叉查找树:
  • 特点:

    1.每个节点上最多有2个子节点

    2.每个节点的左子节点都小于节点

    3.每个节点的右子节点都大于节点

    • 添加节点规则:

      • 小的存左边,大的存右边,相等不存
    • 查找结点方法:和添加规则一样的


二叉树的遍历方式:

1.前序遍历:从根出发:根->左->右

2.中序遍历:从左出发:左->中(当前结点)->右

3.后续遍历:从左出发:左->右->中

4.层序遍历:从根出发:根->左->右->下一层->根->左->右->

平衡二叉树:

  • 规则:任意结点的左右子树高度差不超过1

    • 平衡二叉树的保持平衡的旋转机制
    • 触发时机:添加一个结点后,该树不是平衡二叉树
      1.左旋
      确定支点:从添加的结点一个个的向上寻找,找到不平衡的点
      旋转:将不平衡的点降级(左子节点),原来不平衡的点下个节点,晋级


    ​ 多种情况:找到不平衡点,将不平衡的右子节点晋升,不平衡点降级,原来的不平衡点的右子节点的左节点,变为不平衡的点的右子节点

    2.右旋

    确定支点:从添加的结点一个个的向上寻找,找到不平衡的点

    和左旋简单版差不多

难度版:找到不平衡点,将不平衡的左子节点晋升,不平衡点降级,原来的不平衡点的左子节点的右节点,变为不平衡的点的左子节点

  • 旋转的配合:一次旋转不能将二叉树进行平衡,只能通过多次旋转

    • 左左,左右
    • 右右,右左

    红黑树:

1972年成为二叉平衡树b树,是一种特殊的查找树,不是规则的树,通过红黑规则实现的

红黑规则:

  • 每一个结点必须是红色,或者是黑色
  • 根节点 必须是黑色
  • 一个结点没有子节点或者父节点 ,则该节点的指针属性为nil ,这些nil视为叶节点 ,每个叶节点是黑色的
  • 红色结点的子节点必须是黑色的(红红不能相联
  • 每一个结点的到叶结点的简单路径上 ,均包含相同数目的黑色节点

红黑树节点的添加规则:

  • 默认添加节点的颜色是红色的这样的效率最高

  • 添加规则多种

  • 红黑树的增删改查性能比较好

image-20230912191405327" style="zoom: 67%;" />

  • 添加规则多种

    外链图片转存中...(img-DgYDbTk2-1694765134852)

  • 红黑树的增删改查性能比较好
相关推荐
励志的小陈5 小时前
数据结构--二叉树知识讲解
数据结构
chools5 小时前
【AI超级智能体】快速搞懂工具调用Tool Calling 和 MCP协议
java·人工智能·学习·ai
自信150413057595 小时前
重生之从0开始学习c++之模板初级
c++·学习
笨笨饿5 小时前
#58_万能函数的构造方法:ReLU函数
数据结构·人工智能·stm32·单片机·硬件工程·学习方法
nashane5 小时前
HarmonyOS 6学习:解决异步场景下Toast提示框无法弹出的UI上下文丢失问题
学习·ui·harmonyos·harmony app
码喽7号8 小时前
Vue学习七:MockJs前端数据模拟
前端·vue.js·学习
三品吉他手会点灯9 小时前
STM32F103 学习笔记-21-串口通信(第4节)—串口发送和接收代码讲解(中)
笔记·stm32·单片机·嵌入式硬件·学习
EnglishJun11 小时前
ARM嵌入式学习(二十三)--- I2C总线和SPI总线
arm开发·学习
饭后一颗花生米11 小时前
2026 AI加持下前端学习路线:从入门到进阶,高效突破核心竞争力
前端·人工智能·学习