关于c++:算法笔记第9章第10章各种定义总结

3次阅读

共计 1118 个字符,预计需要花费 3 分钟才能阅读完成。

二叉树(Binary Tree):

  1. 要么二叉树没有根节点,是一棵空树。
  2. 要么二叉树由根节点、左子树、右子树组成,且左子树和右子树都是二叉树。

满二叉树:

每一层的节点数都达到了当层能达到的最大结点数。

齐全二叉树:

定义:除了最上面一层外,其余层的结点个数都达到了当层能达到的最大结点数,且最上面一层只从左至右间断存在若干结点,而这些间断结点左边的结点全副不存在。

小技巧:

​ 1. 判断某个结点是否为叶结点的标记为:该结点(记下标为 root)的左子结点的编号 root*2 大于结点总个数n

​ 2. 判断某个结点是否为空结点的标记为:该结点下标 root 大于结点总个数n

二叉查找树(Binary Search Tree):

  1. 要么二叉查找树是一棵空树。
  2. 要么二叉查找树由根节点、左子树、右子树组成,其中左子树和右子树都是二叉查找树,且左子树上所有结点的数据域均 小于或等于 根结点的数据域,右子树上所有结点的数据域均 大于 根节点的数据域。

均衡二叉树(AVL 树):

AVL 树依然是一棵 二叉查找树(Binary Search Tree),对于 AVL 树的任意结点来说,其左子树和右子树的高度之差的绝对值不超过 1。

其中左子树和右子树的高度之差称为该结点的 均衡因子

并查集:

并查集是一种保护汇合的数据结构,并查集反对上面两个操作:

  1. 合并:合并两个汇合。
  2. 查找:判断两个元素是否在一个汇合。

堆:

堆是一棵 齐全二叉树 ,用 priority_queue 实现即可,priority_queue 默认是 大顶堆 ,如果想用 小顶堆,就采纳上面的代码:

priority_queue<int,vector<int>,greater<int>> q 数字越 优先级越大。

度(对树而言):

把结点的子树棵数称为结点的 度(degree), 而树中结点的最大的度称为树的 度(也称为树的宽度)

度(对图而言):

顶点的 是指和该顶点相连的边的条数,特地是对于有向图来说,顶点的出边条数称为该顶点的 出度 ,顶点的入边条数称为该顶点的 入度

最小生成树:

最小生成树(Minimum Spanning Tree,MST)是在一个给定的 无向图 G(V,E)中求一棵树 T,使得这棵树领有图 G 中的所有顶点,且所有边都是来自图 G 中的边,并且满足整棵树的边权之和最小。

最小生成树有 3 个性质须要把握:

  1. 最小生成树是树,因而其边数等于 顶点数减 1 ,且树内 肯定不会有环
  2. 对给定的图 G(V,E),其最小生成树 能够不惟一 ,但其边权之和 肯定是惟一的
  3. 因为最小生成树是在无向图上生成的,因而其根节点能够是这棵树上的任意一个结点。如果题目中波及最小生成树自身的输入,为了让最小生成树惟一,个别都会间接给出根节点,读者只须要以给出的结点作为根节点来求解最小生成树即可。

参考书目:《算法笔记》

正文完
 0