![](https://img-blog.csdnimg.cn/20190918140053667.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
图&树
文章平均质量分 80
图和树的问题
{∞}
自然选择,前进四!
展开
-
【c++提高1】拓扑排序
大纲大纲1.引入2.Kahn算法3.DFS求拓扑排序4.例题1.引入:对于一个有向无环(V,E)来说,其拓扑排序是G中所有顶点的一种线性次序,该次序满足如下条件:如果图G包含边(u,v) ,则节点u在拓扑排序中处于v的前面(如果图G包含环路,则不可能排出一个线性次序)。注意:拓扑排序不是唯一的。2.Kahn算法算法思想:每次找到一个入度为0的顶点,删除该顶点及其所有的出弧。【Kahn判断环】通过Kahn算法判断图中是否有环。......原创 2022-08-17 11:32:01 · 380 阅读 · 0 评论 -
【c++提高1】树
🔑引入Q:小Z的堂兄弟和小科拥有同一个爷爷(双亲的双亲),不同的父亲(双亲结点)。使用双亲表示法,记录下每个人的双亲。枚举所有节点,如果其和小Z的双亲的双亲是同一人,且双亲不是同一人,那么他是小科的堂兄弟。注意:树中堂兄的定义是,双亲在同一层(不是同一结点)的结点互为堂兄弟。代码:树(Tree)是n(n ≥ 0)个结点的有限集。 n == 0时称为空树。在任意一棵非空树中:树中的元素称为:结点。有且仅有一个称为根(Root)的结点,如图中的A结点。当n > 1时,根以外的结点可分为m(m.原创 2022-07-13 12:59:59 · 808 阅读 · 1 评论 -
【c++提高1】数据结构之线段树详解
线段树的思想是将一个区间[1, n]划分成两个区间:[1, n/2]和[n/2+1, n],接下来继续划分:[1, n/4], [n/4+1,n/2]和[n/2+1, n/2+n/4-1], [n/2+n/4,n]…示例:n = 81.pushup函数2.pushdown3.build4.modify5.query1.线段树的儿子存储2.线段树的节点信息存储定义一个结构体,里面存储改节点信息和当前这个节点所管辖的区间的左右端点。1.建树函数build递归建树。怎样判断当前节点是叶子节点呢?2.查原创 2022-09-09 21:04:12 · 1717 阅读 · 0 评论 -
对称的二叉树【树的遍历】
题思路:dfs遍历n个节点,判断是否对称:原创 2022-07-04 19:02:15 · 201 阅读 · 0 评论 -
【c++提高1】最大流(超详细图解)
流网络G(V, E)是一个有向图,图中每条边(u, v)∈E都有一个非负权值c(u, v) ,称为边的容量。并且,如果边集E包含一条边(u, v),则图中不存在反方向的边(v, u)。如果(u, v)∉ E,则c(u, v) = 0。在流网络的所有节点中,有两个特殊节点:源点S和汇点T。流网络示例:设G(V, E)是一个流网络,其容量函数为c,设S为网络的源点,T为网络的汇点。原创 2022-08-24 20:28:24 · 3803 阅读 · 2 评论