复习IO操作,突然想写一个小工具,统计一下电脑里面的Java代码量还有注释率,最开始随手写了一个递归算法,遍历文件夹,比较简单,而且代码层次清晰,相对易于理解,代码如下:(完整代码贴在最后面,前面是功能实现代码) public static void visitFile(File file) { if (file != null) { // 如果是文件夹 if (file.isDirectory()) { // 统计文件夹下面的所有文件路径 File[] fls = file.listFiles…
/*图的存储及遍历*/ #include<iostream> using namespace std; //----------------------------------- //邻接矩阵的存储及深度和广度遍历 //----------------------------------- /*邻接矩阵的类型定义*/ #define MAX 10000000 #define MAX_VERTEX_NUM 20 typedef enum{ DG,DN,UDG,UDN }GraphKind;//有…
我们在实际的工作业务场景中经常遇到这样的场景,求取树数据中某个节点的父亲节点以及所有的父亲节点,这样的场景下不建议使用深度遍历,使用广度遍历可以更快找到. 1.案例解说 比如树的长相是这样的: 树的数据是这样的: 是我们常用的树的数据及长相. 2.业务要求 在[测试抽取5]后面新增一个节点,要求 1)接口要求传入当前节点的父节点: 2)新增后重新获取树数据,默认展开所有的父级 3.代码实现及说明 思路: 1)设定一个排队数组parentIdsQueue将树数据开始排队: 2)如果当前数据有孩子节…
连通图的遍历(深度遍历/广度遍历) 概念:图中的所有节点都要遍历到,并且只能遍历一次. 深度遍历 广度遍历 深度遍历 概念:从一个给定的顶点开始,找到一条边,沿着这条边一直遍历. 广度遍历 概念:从一个给定的顶点开始,找到这个顶点下的所有子顶点后,再找下一层的子顶点. 深度遍历的实现思路 1,创建一个bool数组,用来识别哪个顶点已经被遍历过了. 2,递归 3,递归找给定顶点是否有下一个顶点(方法:get_first_neighbor),都找完后, 4,再递归找给定顶点之后的在3处找到的顶点后的…
java遍历树如现有以下一颗树:A     B          B1               B11          B2               B22     C          C1               C11               C12          C2     D          D1               D11 第一种方式深度优先遍历 (最终返回的一棵压扁的树,依次从上往下)使用Stack,由于stack是先进后出,故实现方式为:首先pu…
目录 多级树的深度遍历与广度遍历 节点模型 深度优先遍历 广度优先遍历 多级树的深度遍历与广度遍历 深度优先遍历与广度优先遍历其实是属于图算法的一种,多级树可以看做是一种特殊的图,所以多级数的深/广遍历直接套用图结构的遍历方法即可. 工程中通常会用多级树来存储页面表单的各级联动类目,本文提供了深度遍历与广度遍历的示例,在使用时只要根据你的业务需求稍加改动即可. 我们知道,遍历有递归,非递归两种方式.在工程项目上,一般是禁用递归方式的,因为递归非常容易使得系统爆栈.同时,JVM也限制了最大递归数量…
参考网址:https://www.cnblogs.com/aoximin/p/13162635.html 前言 简介图: 在数据的逻辑结构D=(KR)中,如果K中结点对于关系R的前趋和后继的个数不加限制,即仅含一种任意的关系,则称这种数据结构为图形结构. 来源百度百科 图形结构是一种比树形结构更复杂的非线性结构.在树形结构中,结点间具有分支层次关系,每一层上的结点只能和上一层中的至多一个结点相关,但可能和下一层的多个结点相关.而在图形结构中,任意两个结点之间都可能相关,即结点之间的邻接关系可以是…
//采用邻接矩阵表示图的深度优先搜索遍历(与深度优先搜索遍历连通图的递归算法仅仅是DFS的遍历方式变了) #include <iostream> using namespace std; #define MVNun 100 typedef char VerTexType; typedef int ArcType; typedef struct { VerTexType vexs[MVNun]; ArcType arcs[MVNun][MVNun]; int vexnum, arcnum; }G…
二叉树的遍历,分为深度优先遍历,以及广度优先遍历. 在深度优先遍历中,具体分为如下三种: 先序遍历:先访问根节点,再遍历左子树,再遍历右子树: 中序遍历:先遍历左子树,再访问根节点,再遍历右子树: 后序遍历:先遍历左子树,再遍历右子树,再访问根节点: 针对上图二叉树,三种遍历结果为: 先序遍历:50,20,15,30,60,70 中序遍历:15,20,30,50,60,70 后序遍历:15,30,20,70,60,50 实现代码如下: # 定义二叉树节点 class TreeNode(objec…
树 利用顺序存储和链式存储的特点,可以实现树的存储结构的表示,具体表示法有很多种. 1)双亲表示法:在每个结点中,附设一个指示器指示其双亲结点在数组中的位置. 2)孩子表示法:把每个结点的孩子排列起来,以单链表作存储结构,则n个结点有n个孩子链表,如果是叶子结点则此单链表为空.然后n个头指针又组成一个线性表,采用顺序存储结构,存放进一个一维数组中. 3)孩子兄弟表示法:任意一棵树,它的结点的第一个孩子如果存在就是唯一的,它的右兄弟如果存在也是唯一的.因此,可以设置两个指针,分别指向该结点的第一个…