数据结构中一些零碎且易忘的知识点

  1. 并查集:

    • 并查集的应用:
      • 判断连通性、判环
      • Kruskal算法=排序+并查集
    • 并查集的存储方式
      • 逻辑:双亲表示法的树
      • 存储:数组
    • 并查集的时间复杂度(m为并查集长度)
      • find:优化前为 O ( m ) O(m) O(m);优化后为 O ( l o g 2 n ) O(log_{2}n) O(log2n)
      • union: O ( 1 ) O(1) O(1)
      • 总复杂度:优化前 O ( m 2 ) O(m^2) O(m2);优化后 O ( m ) O(m) O(m)
  2. 树、森林、二叉树遍历序列的关系

    森林 二叉树
    先根遍历 先序遍历 先序遍历
    后根遍历 中序遍历 中序遍历

    关于森林的中序遍历/后序遍历叫法问题:二者指森林的同一种遍历方法,都是先遍历第一棵树的子节点,然后是第一棵树的根节点,然后是第二棵树... 之所以称为中序遍历,是因为要先处理完一棵树再处理另一棵树。

  1. DFS与BFS算法的应用:
    • DFS:
      • 判断图的(强)连通性
        • 无向图的连通性:若从任意一个节点出发,仅需一次DFS就可以访问图中所有节点,则该无向图就是连通的
        • 有向图的强连通性:从任意一个节点v出发DFS,若可以遍历该有向图的所有节点,则此时将该有向图的所有边反向,再次从节点v出发进行DFS,若能够再次遍历该有向图的所有节点,则表示该有向图是强连通图
      • 判断图中是否有环(回路)
      • 欧拉回路求解:若一条路径能不重复的包含图中所有边,则称该路径为欧拉路径。若一条回路(从一个节点出发又能回到该节点的路径)是欧拉路径,则称为欧拉回路。DFS可以判断图中是否存在欧拉回路
      • 迷宫
      • 判断二分图
    • BFS:
  2. 最短路径
    • 有无环(回路)对Dijkstra算法并无影响,但Dijkstra算法不能求解存在负权值边的图;Floyd算法可以求带有负权值边的图,但图中不能存在负权回路(因为带有负权回路的图没有最短路径)
    • Dijkstra算法是解决单源最短路径类问题,floyd算法是解决多源最短路径(指图中任意两个顶点之间的最短路径)类问题
    • Dijkstra算法属于贪心算法,floyd算法属于动态规划算法
  3. 判断有向图是否有环(回路)的几种方法:
    • 深度优先遍历:若在遍历过程中遇到要访问的节点已在栈中就是有环
    • 拓扑排序:找不到拓扑序列必定有环
  4. 拓扑排序
    • 在拓扑排序算法中,为暂存入度为零的顶点可以使用栈,也可以使用队列。(因为只要入了栈/队列,就都是入度为零的,从哪个入度为零的先开始都无所谓)
    • 采用深度优先遍历也可实现拓扑排序
相关推荐
青山木1 分钟前
Hot 100 --- 最小栈
java·数据结构·算法·leetcode
疯狂打码的少年5 分钟前
【数据结构】栈的应用:表达式求值(后缀表达式)
java·数据结构·笔记·算法
HiDev_15 分钟前
【非标自动化】plc执行顺序问题、扫描周期问题
深度学习·算法·机器学习
高洁0144 分钟前
工信部教考中心证书-人工智能系列本系列
人工智能·python·深度学习·算法
陈王卜1 小时前
Reduce 算子优化笔记
算法
wabs6661 小时前
关于图论【最短路径之Bellman_ford 算法(判断负权回路)|卡码网95.城市间货物运输II的思考】
数据结构·算法·图论·bellman_ford算法·卡码网·判断负权回路
YouonlyliveonceC1 小时前
《大话数据结构》第4章实战:中缀表达式转后缀 + 后缀表达式求值(完整可运行实现)
算法
phoenix@Capricornus2 小时前
从统计决策到贝叶斯估计
人工智能·算法·机器学习
AICDragon2 小时前
1.8%就够了:K3的896个MoE专家,为什么激活率这么低反而是好事?
人工智能·算法
VALENIAN瓦伦尼安教学设备2 小时前
ASHOOTER激光对中仪如何通过颜色确定调整是否合适
数据库·嵌入式硬件·算法