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

  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. 拓扑排序
    • 在拓扑排序算法中,为暂存入度为零的顶点可以使用栈,也可以使用队列。(因为只要入了栈/队列,就都是入度为零的,从哪个入度为零的先开始都无所谓)
    • 采用深度优先遍历也可实现拓扑排序
相关推荐
爱思德学术14 分钟前
中国计算机学会(CCF)推荐学术会议-B(交叉/综合/新兴):BIBM 2025
算法
冰糖猕猴桃24 分钟前
【Python】进阶 - 数据结构与算法
开发语言·数据结构·python·算法·时间复杂度、空间复杂度·树、二叉树·堆、图
lifallen38 分钟前
Paimon vs. HBase:全链路开销对比
java·大数据·数据结构·数据库·算法·flink·hbase
liujing102329291 小时前
Day04_刷题niuke20250703
java·开发语言·算法
2401_881244402 小时前
Treap树
数据结构·算法
乌萨奇也要立志学C++2 小时前
二叉树OJ题(单值树、相同树、找子树、构建和遍历)
数据结构·算法
网安INF2 小时前
深度学习中的逻辑回归:从原理到Python实现
人工智能·python·深度学习·算法·逻辑回归
wsxqaz2 小时前
浏览器原生控件上传PDF导致hash值不同
算法·pdf·哈希算法
NAGNIP3 小时前
Transformer注意力机制——MHA&MQA&GQA
人工智能·算法
摘星编程3 小时前
多模态AI Agent技术栈解析:视觉-语言-决策融合的算法原理与实践
人工智能·算法·多模态ai·视觉语言融合·ai决策算法