数据结构基础学习

数据结构

栈:

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

队列:

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

数组

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

链表

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

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

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

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



    树:

    • 节点:每一个元素

节点详解:

  • 度:每一个节点的子节点数量称为度
  • 二叉树:每个节点最多有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语言实战解析
c语言·数据结构·算法·新人首发
lizhihai_992 小时前
股市学习心得-AI算力20大硬件四金刚
学习
卖芒果的潇洒农民2 小时前
【0417】学习路线
学习
木子墨5162 小时前
LeetCode 热题 100 精讲 | 并查集篇:最长连续序列 · 岛屿数量 · 省份数量 · 冗余连接 · 等式方程的可满足性
数据结构·c++·算法·leetcode
han_hanker3 小时前
RequestAttributes , ServletRequestAttributes学习
学习
2501_921960853 小时前
双相自指图与弦论边界非对易性的结构同源
数据结构
Liangwei Lin3 小时前
洛谷 P3133 [USACO16JAN] Radio Contact G
数据结构·算法
weixin_513449963 小时前
PCA、SVD 、 ICP 、kd-tree算法的简单整理总结
c++·人工智能·学习·算法·机器人
鱼鳞_4 小时前
Java学习笔记_Day29(异常)
java·笔记·学习
嵌入式小企鹅4 小时前
DeepSeek-V4昇腾首发、国芯抗量子MCU突破、AI编程Agent抢班夺权
人工智能·学习·ai·程序员·算力·risc-v