数据结构期末复习
侧边栏壁纸
  • 累计撰写 8 篇文章
  • 累计收到 303 条评论

数据结构期末复习

hongyuxuan
2024-06-19 / 58 评论 / 55 阅读 / 正在检测是否收录...

大一下复习

数据结构期末复习

二叉树的遍历

牢记递归思想。

// 中序遍历
void mFind(Node* root) {
    if (root == nullptr) {
        return;
    }
    // 先递归遍历左子树
    mFind(root->lc);
    // 访问当前结点
    cout << root->data << " ";
    // 再递归遍历右子树
    mFind(root->rc);
}

树和森林的转换

参考视频

  • 树转森林:删除树的根节点,根节点的子树即为森林。
  • 森林转树:将森林的第一棵树作为树的根节点,其他树作为根节点的子树依次连接起来。

哈夫曼树(Huffman Tree)

带权路径长度:带权路径长度 = SUM(长度*权值)

  1. 选择权值最小的两个节点作为左右子树。
  2. 合并这两个节点并更新权值,重复以上步骤,直到只剩一个根节点。

  • 入度和出度:在有向图中,如果一个人可以向多个人说话(即有多个人可以听他说话),那么他的“出度”就是他说话对象的数量。相对的,“入度”就是有多少人可以向他说话。
  • 深度优先搜索:D(Depth)FS(类似树的先序遍历)

    // DFS 深度优先搜索
    // 从节点u开始进行深度优先搜索
    void DFS(int u) {
      // 输出当前访问的节点u
      cout << u << " ";
      // 标记节点u为已访问
      vis[u] = 1;
      // 遍历节点u的邻接表 递归访问所有未被访问的相邻节点
      for (int i = head[u]; i != -1; i = edg[i].next) {
          int v = edg[i].to;
          if (!vis[v]) {
              DFS(v);
          }
      }
    }
  • 广度优先搜索:B(Breadth)FS(类似树的层序遍历)
  • 拓扑排序:每次选入度为0的点,然后删除这个点和它的出边

最小生成树(Minimum Spanning Tree)

参考视频

  • Prim算法:从任一节点开始,每次选择权值最小的边连接一个新节点,直到所有节点都连接。
  • Kruskal算法:将所有边按权值从小到大排序,依次选择不形成环的最小权值边,直到所有节点都连接。

最短路径(Shortest Path)

  • Dijkstra算法:用于单源最短路径,适合边权为非负的图,从起点开始逐步扩展最短路径,直到所有节点都找到最短路径。
  • Floyd-Warshall算法:用于任意两点间最短路径,逐步优化所有点对的路径。

二叉排序树(Binary Search Tree, BST)

BST是一种特殊的二叉树,左子树所有节点的值都小于根节点的值,右子树所有节点的值都大于根节点的值。

  • 平衡二叉树、二叉排序树:任意节点左右子树的深度差≤1
  • 二叉排序树的调整:参考视频(调整LL,LR,RL,RR)

B树和B+树

  • B树:一种自平衡的多路查找树,节点可以有多个子节点,用于数据库和文件系统。
  • B+树:B树的变种,所有叶子节点构成一个有序链表,更适合范围查询。

散列表(Hash Table)

散列表是一种数据结构,通过哈希函数将键映射到表中的位置进行存储,实现快速查找、插入和删除。

排序算法

  • 插入排序(Insertion Sort):通过构建有序序列,对未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。
    下面这些都不稳定
  • 希尔排序(Shell Sort):插入排序的一种改进,分组进行插入排序,逐步减少分组数量,最终整体插入排序。
  • 快速排序(Quick Sort):通过分区将数组分成两部分,递归对两部分排序。

    // 交换两个元素的值(略)
    void swap(int &a, int &b);
    // 分区函数
    int partition(vector<int> &arr, int low, int high) {
      int pivot = arr[high];  // 选择最后一个元素作为枢轴
      int i = low - 1;        // 指向较小元素的索引
      for (int j = low; j < high; ++j) {
          if (arr[j] < pivot) {  // 如果当前元素小于枢轴
              ++i;
              swap(arr[i], arr[j]);  // 交换arr[i]和arr[j]
          }
      }
      swap(arr[i + 1], arr[high]);  // 将枢轴放在正确的位置
      return i + 1;                 // 返回枢轴的索引
    }
    // 快速排序函数
    void quickSort(vector<int> &arr, int low, int high) {
      if (low < high) {
          int pi = partition(arr, low, high);  // 获取分区索引
          quickSort(arr, low, pi - 1);  // 递归排序左子数组
          quickSort(arr, pi + 1, high); // 递归排序右子数组
      }
    }
  • 堆排序(Heap Sort):利用堆这种数据结构,将数组看成完全二叉树,构建最大堆,然后依次取出堆顶元素进行排序。
0

评论 (58)

取消
  1. 头像
    ???
    Windows 10 · Google Chrome

    啊哈哈红红火火恍恍惚惚哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈

    回复
  2. 头像
    cjygydarqe
    Windows 10 · Google Chrome

    文字流畅如丝,语言优美动人,读来令人心旷神怡。

    回复
  3. 头像
    hgyjomzqwa
    Windows 10 · Google Chrome

    悬念设置恰到好处,牢牢抓住读者注意力。

    回复
  4. 头像
    dlgnndlqac
    Windows 10 · Google Chrome

    这是一篇佳作,无论是从内容、语言还是结构上,都堪称完美。

    回复
  5. 头像
    atebfyycmj
    Windows 10 · Google Chrome

    这篇文章不错!

    回复
  6. 头像
    ogihtvksus
    Windows 10 · Google Chrome

    我要我们在一起

    回复
  7. 头像
    fmojvabldb
    Windows 10 · Google Chrome

    美国国家公园第二季

    回复
  8. 头像
    lsefnlimqo
    Windows 10 · Google Chrome

    悲恋印巴

    回复
  9. 头像
    eznqtpxfok
    Windows 10 · Google Chrome

    此生尽是你

    回复
  10. 头像
    ebaxvjdeox
    Windows 10 · Google Chrome

    聊斋之极道天师

    回复
  11. 头像
    fdhzlgkzzh
    Windows 10 · Google Chrome

    钟无艳

    回复
  12. 头像
    lphvwdhgzd
    Windows 10 · Google Chrome

    缪斯

    回复
  13. 头像
    ubetheecuw
    Windows 10 · Google Chrome

    致命情事

    回复
  14. 头像
    lynlxofaef
    Windows 10 · Google Chrome

    雷蒙斯尼奇的不幸历险

    回复
  15. 头像
    hiemewhmjb
    Windows 10 · Google Chrome

    多了一点什么

    回复
  16. 头像
    hlmjuscned
    Windows 10 · Google Chrome

    从今日起1天

    回复
  17. 头像
    segkygkxuv
    Windows 10 · Google Chrome

    闪耀的瞬间

    回复
  18. 头像
    wyqfokbqfs
    Windows 10 · Google Chrome

    大灌丛

    回复
  19. 头像
    cgcvgllfrm
    Windows 10 · Google Chrome

    暗夜女妖

    回复
  20. 头像
    xhrzdyzxub
    Windows 10 · Google Chrome

    新河东狮吼

    回复
  21. 头像
    roqljrtwuy
    Windows 10 · Google Chrome

    时间的守护者

    回复
  22. 头像
    meujsnnnnh
    Windows 10 · Google Chrome

    不在乎的微妙艺术

    回复
  23. 头像
    djyysvkdrw
    Windows 10 · Google Chrome

    浴室墙上的字

    回复
  24. 头像
    dirshbxyyp
    Windows 10 · Google Chrome

    罪魁祸首

    回复
  25. 头像
    xpnuhdqddl
    Windows 10 · Google Chrome

    后天

    回复
  26. 头像
    slklsmkfgt
    Windows 10 · Google Chrome

    一代爱国高僧圆瑛

    回复
  27. 头像
    xisvvjdkjx
    Windows 10 · Google Chrome

    唐人街探案3

    回复
  28. 头像
    ofvkdyyzth
    Windows 10 · Google Chrome

    迷案寻凶

    回复
  29. 头像
    kkajfuclsa
    Windows 10 · Google Chrome

    绝命银行

    回复
  30. 头像
    ybjrlmoicd
    Windows 10 · Google Chrome

    狙击精英幽灵射手

    回复
  31. 头像
    syuxfmsrfu
    Windows 10 · Google Chrome

    谈判专家交渉人

    回复
  32. 头像
    jvetprmzga
    Windows 10 · Google Chrome

    多了一点什么

    回复
  33. 头像
    lsvxerrgth
    Windows 10 · Google Chrome

    X魔兽

    回复
  34. 头像
    qhwxtgauhi
    Windows 10 · Google Chrome

    多想和你再见一面

    回复
  35. 头像
    zxukzudqls
    Windows 10 · Google Chrome

    笑林小子

    回复
  36. 头像
    kvmpcxkyzc
    Windows 10 · Google Chrome

    喜剧片的黄金时代

    回复
  37. 头像
    gxgnhubuah
    Windows 10 · Google Chrome

    动物之家

    回复
  38. 头像
    bavxqyygab
    Windows 10 · Google Chrome

    外接手

    回复
  39. 头像
    dlnktjjfmb
    Windows 10 · Google Chrome

    托尼和蒂娜的婚礼

    回复
  40. 头像
    zoxszbqfnb
    Windows 10 · Google Chrome

    化身博士

    回复
  41. 头像
    zkguhpkfgg
    Windows 10 · Google Chrome

    爱上罗姗

    回复
  42. 头像
    ktbbcxvwdn
    Windows 10 · Google Chrome

    豹子头林冲之山神庙

    回复
  43. 头像
    atvwlnoiif
    Windows 10 · Google Chrome

    新警察故事

    回复
  44. 头像
    buqrsfunbi
    Windows 10 · Google Chrome

    哈利波特与密室

    回复
  45. 头像
    nadkkltnnh
    Windows 10 · Google Chrome

    动物的秘密生活

    回复
  46. 头像
    tuocwmopfi
    Windows 10 · Google Chrome

    理发师陶德

    回复
  47. 头像
    wocqeqbnny
    Windows 10 · Google Chrome

    神出鬼没ghosted

    回复
  48. 头像
    bshncqxdkn
    Windows 10 · Google Chrome

    女拳皇

    回复
  49. 头像
    pgbcjmzzmz
    Windows 10 · Google Chrome

    碧血剑

    回复
  50. 头像
    iupeyysgau
    Windows 10 · Google Chrome

    封魔纪之赤雷传

    回复
  51. 头像
    amvweylmaj
    Windows 10 · Google Chrome

    夺钻狙击

    回复
  52. 头像
    lrbqbcpvfm
    Windows 10 · Google Chrome

    或者乌托邦

    回复
  53. 头像
    gqksuvvcdk
    Windows 10 · Google Chrome

    律法之地

    回复
  54. 头像
    zrajzqwdkg
    Windows 10 · Google Chrome

    dj特工

    回复
  55. 头像
    hnklvfbpya
    Windows 10 · Google Chrome

    等待

    回复
  56. 头像
    ikhvippwov
    Windows 10 · Google Chrome

    1600谋杀案

    回复
  57. 头像
    mcrezaahcw
    Windows 10 · Google Chrome

    一念之痒

    回复
  58. 头像
    myowemboci
    Windows 10 · Google Chrome

    我何爷爷

    回复