原文地址:树边,前向边,后向边,横叉边

树边,前向边,后向边,横叉边,应该说,不是一个图本身有的概念,应该是图进行DFS时才有的概念。图进行DFS会得到一棵DFS树(森林),在这个树上 才有了这些概念。对图进行DFS,可以从任意的顶点开始,遍历的方式也是多样的,所以不同的遍历会得到不同的DFS树,进而产生不同的树边,前向边,后向 边,横叉边。所以这4种边,是一个相对的概念。
在图的遍历中,往往设置了一个标记数组vis的bool值来记录顶点是否被访问过。但有些时候需要改变vis值的意义。令vis具有3种值并表示3种不同含义
vis = 0,表示该顶点没没有被访问
vis = 1,表示该顶点已经被访问,但其子孙后代还没被访问完,也就没从该点返回
vis = 2,,表示该顶点已经被访问,其子孙后代也已经访问完,也已经从该顶点返回
可以vis的3种值表示的是一种顺序关系和时间关系

《算法导论》334页有这4种边的准确定义,在此不累述
DFS过程中,对于一条边u->v
vis[v] = 0,说明v还没被访问,v是首次被发现,u->v是一条树边
vis[v] = 1,说明v已经被访问,但其子孙后代还没有被访问完(正在访问中),而u又指向v?说明u就是v的子孙后代,u->v是一条后向边,因此后向边又称返祖边
vis[v] = 3,z说明v已经被访问,其子孙后代也已经全部访问完,u->v这条边可能是一条横叉边,或者前向边

注意:树边,后向边,前向边,都有祖先,后裔的关系,但横叉边没有,u->v为横叉边,说明在这棵DFS树中,它们不是祖先后裔的关系它们可能是兄弟关系,堂兄弟关系,甚至更远的关系,如果是dfs森林的话,u和v甚至可以在不同的树上

在很多算法中,后向边都是有作用的,但是前向边和横叉边的作用往往被淡化,其实它们没有太大作用。

下面上一张图:

树边 Tree Edge
横叉边 Cross Edge
前向边 Forward Edge
后向边 Back Edge

树边,前向边,后向边,横叉边相关推荐

  1. (伪代码)树的前中后遍历和层次遍历算法实现(考研适用,递归和非递归)

    文章目录 前言 一.递归实现树的遍历 二.非递归实现 层次遍历 总结 前言 2022考研初试结束,总结了一些考研中基本常用算法.这篇主要是关于树的前中后遍历,递归实现和非递归实现两种,现在很多自命题在 ...

  2. java二叉树合并_Java(树的前中后序遍历构造二叉树题型整合)前序和中序、中序和后序、前序和后序遍历序列构造二叉树算法整合归纳...

    前言 二叉树各种花里胡哨的算法题真的把我搞晕了,今天特地整理出一类有关二叉树的算法题,希望能帮助阅读到此文章的人,今后不再受此类题型的困扰. 一.题目类型 已知二叉树的两种遍历序列,请根据该序列构建二 ...

  3. PTA L2-006 树的遍历-二叉树的后序遍历+中序遍历,输出层序遍历 团体程序设计天梯赛-练习集...

    L2-006 树的遍历 (25 分) 给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列.这里假设键值都是互不相等的正整数. 输入格式: 输入第一行给出一个正整数N(≤),是二叉树中结点的个 ...

  4. tree traversal (树的遍历) - postorder traversal (后序遍历)

    tree traversal (树的遍历) - postorder traversal (后序遍历) 1. tree traversal - 树的遍历 二叉树的遍历 (traversing binar ...

  5. 前后端分离后的前端时代

    什么是前后端分离,要区分前端和后端,需要有个明确的界限.一般,用户可以直接看到的东西,都是属于前端的范畴,除了前端之外都属于后端了. 在传统的像ASP,JSP和PHP等开发模式中,前端是处在一个混沌的 ...

  6. R语言构建xgboost模型:使用xgboost的第一颗树(前N颗树)进行预测推理或者使用全部树进行预测推理、比较误分类率指标

    R语言构建xgboost模型:使用xgboost的第一颗树(前N颗树)进行预测推理或者使用全部树进行预测推理.比较误分类率指标 目录

  7. 隐马尔科夫模型(HMM)解释 和 前向与后向算法[转] 讲解通俗易懂 赞

    HMM前向算法讲明白第一功 https://blog.csdn.net/xueyingxue001/article/details/52396494?simpread_mode=read HMM后向算 ...

  8. 循环前增加和后增加之间的区别?

    本文翻译自:Difference between pre-increment and post-increment in a loop? Is there a difference in ++i an ...

  9. 你需要来自trustedinstaller的权限才能删除_前后端分离后的权限控制设计方案

    近几年随着react.angular.vue等前端框架兴起,前后端分离的架构迅速流行.但同时权限控制也带来了问题.网上很多前.后端分离权限仅仅都仅仅在描述前端权限控制.且是较简单.固定的角色场景,满足 ...

  10. [css] style标签写在body前和body后的区别是什么?

    [css] style标签写在body前和body后的区别是什么? 渲染机制的区别,在body前是已经把样式浏览一遍,到了对应标签直接,渲染样式.显示块. 在body后,是浏览器已经把标签浏览了,但基 ...

最新文章

  1. 最完整的Win7快捷键
  2. 激怒开源社区,微软悄悄删除2500行功能代码后致歉:已恢复!
  3. 搭建Kafka集群环境
  4. 【Java】Java Object对象
  5. reduce python_python reduce()函数使用
  6. 学完java后学python_大火的python开发学好后能找到工作吗
  7. jq使用教程07_ JQData HTTP 接口正式上线
  8. 如何用C#代码判断一个类的类型
  9. jack编译报错的问题
  10. Win10加装SSD固态硬盘后卡顿现象的解决方法
  11. MAC 及 Python 快捷键
  12. 关于翁恺老师Java网课中细胞自动机的一点点想法
  13. CS294(285)策略梯度学习笔记
  14. 逆向加固的apk详细教程
  15. 代码风格自动化(二)——husky + lint-staged
  16. 2018年10月OKR初步规划
  17. 武铁机械电子工程_机械电子工程
  18. 【Redis】Info Stats - 监控使用情况
  19. Python入门操作-时间序列分析的重要性
  20. animaton动画

热门文章

  1. RSS订阅(含转载内容)
  2. 《计算机组成原理》复习第七章—外围设备
  3. iOS 蓝牙 Bluetooth 外围设备 中央设备
  4. 如何提高自己的语言表达能力?
  5. 跟驰理论 matlab,第5章-跟驰理论ppt课件
  6. Linux下穿透内网跨平台远程控制与被控制
  7. 通过深度神经网络和树搜索掌握围棋游戏
  8. AP AR mAP ROC AUC(目标检测)
  9. 一文告诉你什么是商务智能
  10. win10系统网络图标变成小地球的解决方法