数据结构基础学习

数据结构

栈:

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

队列:

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

数组

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

链表

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

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

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

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



    树:

    • 节点:每一个元素

节点详解:

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

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

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

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

    • 添加节点规则:

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


二叉树的遍历方式:

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

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

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

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

平衡二叉树:

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

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


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

    2.右旋

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

    和左旋简单版差不多

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

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

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

    红黑树:

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

红黑规则:

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

红黑树节点的添加规则:

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

  • 添加规则多种

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

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

  • 添加规则多种

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

  • 红黑树的增删改查性能比较好
相关推荐
良木生香1 小时前
【C++初阶】:STL——String从入门到应用完全指南(1)
c语言·开发语言·数据结构·c++·算法
XWalnut1 小时前
LeetCode刷题 day16
数据结构·算法·leetcode·链表·动态规划
寒秋花开曾相惜1 小时前
(学习笔记)4.1 Y86-64指令集体系结构(4.1.4 Y86-64异常&4.1.5 Y86-64程序)
开发语言·jvm·数据结构·笔记·学习
莹宝思密达2 小时前
【AI学习】 playwright-cli + SKILL 替换 chrom-devTools-MCP
学习
cyr___2 小时前
Unity教程(二十七)技能系统 黑洞技能(下)黑洞状态
学习·游戏·unity·游戏引擎
foundbug9993 小时前
基于混合整数规划的电池容量优化 - MATLAB实现
数据结构·算法·matlab
自我意识的多元宇宙3 小时前
树、森林——树与二叉树的应用(哈夫曼树的构造)
数据结构
豆瓣鸡3 小时前
Gradle学习
学习
海绵宝宝的月光宝盒4 小时前
2-非金属材料
经验分享·笔记·学习·其他·职场和发展·课程设计·制造
水蓝烟雨4 小时前
2071. 你可以安排的最多任务数目
数据结构·链表