当前位置: 首页 > news >正文

浙江省建设局网站施工图审查网站建设与管理就业前景

浙江省建设局网站施工图审查,网站建设与管理就业前景,晋江网站建设费用,500强企业网站建设深度优先遍历(Depth First Search,简称DFS) 与广度优先遍历(Breath First Search,简称BFS)是图论中两种非常重要的算法,生产上广泛用于拓扑排序,寻路(走迷宫),搜索引擎,爬虫等。 一、深度优先遍历 深度优先…

深度优先遍历(Depth First Search,简称DFS) 与广度优先遍历(Breath First Search,简称BFS)是图论中两种非常重要的算法,生产上广泛用于拓扑排序,寻路(走迷宫),搜索引擎,爬虫等。

一、深度优先遍历
深度优先遍历的思路是从图的一个未访问的顶点V开始,沿着一条路一直走到底,然后从这条路尽头的节点回退到上一个节点,再从另一条路开始走到底,不断递归重复此过程…直到所有的顶点都遍历完成。它的特点说通俗了就是不撞南墙不回头,走完了一条路,再换一条路继续走。
树是图的一种特例( 联通无环的图就是树),接下来我们来看树用深度优先遍历该怎么遍历。
1、深度优先遍历过程
在这里插入图片描述
(1)、我们从根节点1开始深度优先遍历,它相邻的节点有2、3、4,依先遍历节点2,再遍历2的右边节点5,再遍历9,至此便无可遍历的节点。
在这里插入图片描述

(2)、上图中一条路径已经遍历到底,此时从叶子节点9回退到上一节点5,,看下节点 5 是否还有除 9 以外的节点,没有继续回退到 2,2 也没有除 5 以外的节点,回退到 1,1 有除 2 以外的节点 3,所以从节点 3 开始进行深度优先遍历,如下:
在这里插入图片描述
(3)、同理从 10 开始往上回溯到 6, 6 没有除 10 以外的子节点,再往上回溯,发现3有除 6 以外的子节点 7,所以此时会遍历 7。
在这里插入图片描述
(4)、从 7 往上回溯到 3, 1,发现 1 还有节点 4 未遍历,所以此时沿着 4, 8 进行遍历,这样就完成了整个遍历过程。
完整的节点的遍历顺序如下(节点上的的蓝色数字代表):
在这里插入图片描述
相信大家看到以上的遍历不难发现这就是树的前序遍历,实际上不管是前序遍历,还是中序遍历,亦或是后序遍历,都属于深度优先遍历。

那么深度优先遍历该怎么实现呢,有递归和非递归两种表现形式,接下来我们以二叉树为例来看下如何分别用递归和非递归来实现深度优先遍历。
2、深度优先遍历实现
(1)、递归
递归实现比较简单,由于是前序遍历,所以我们依次遍历当前节点,左节点,右节点即可,对于左右节点来说,依次遍历它们的左右节点即可,依此不断递归下去,直到叶节点(递归终止条件),代码如下:

public class Solution { private static class Node { public int value;  // 节点值public Node left;  // 左节点  public Node right;  // 右节点public Node(int value, Node left, Node right) { this.value = value; this.left = left; this.right = right; } } public static void dfs(Node treeNode) { if (treeNode == null) { return; } process(treeNode);  // 遍历节点dfs(treeNode.left);  // 遍历左节点dfs(treeNode.right);  // 遍历右节点} 
} 

递归的表达性很好,也很容易理解,不过如果层级过深,很容易导致栈溢出。所以我们重点看下非递归实现。
(2)、非递归
仔细观察深度优先遍历的特点,对二叉树来说,由于是先序遍历(先遍历当前节点,再遍历左节点,再遍历右节点),所以我们有如下思路:

对于每个节点来说,先遍历当前节点,然后把右节点压栈,再压左节点(这样弹栈的时候会先拿到左节点遍历,符合深度优先遍历要求)。
弹栈,拿到栈顶的节点,如果节点不为空,重复步骤 1, 如果为空,结束遍历。
我们以以下二叉树为例来看下如何用栈来实现 DFS。
在这里插入图片描述
在这里插入图片描述

使用栈来将要遍历的节点压栈,然后出栈后检查此节点是否还有未遍历的节点,有的话压栈,没有的话不断回溯(出栈),有了思路,不难写出如下用栈实现的二叉树的深度优先遍历代码:

/** * 使用栈来实现 dfs * @param root */ 
public static void dfsWithStack(Node root) { if (root == null) { return; } Stack<Node> stack = new Stack<>(); // 先把根节点压栈 stack.push(root); while (!stack.isEmpty()) { Node treeNode = stack.pop(); // 遍历节点 process(treeNode) // 先压右节点 if (treeNode.right != null) { stack.push(treeNode.right); } // 再压左节点 if (treeNode.left != null) { stack.push(treeNode.left); } } 
}

二、深度优先遍历
广度优先遍历,指的是从图的一个未遍历的节点出发,先遍历这个节点的相邻节点,再依次遍历每个相邻节点的相邻节点。

上面所述树的广度优先遍历动图如下,每个节点的值即为它们的遍历顺序。所以广度优先遍历也叫层序遍历,先遍历第一层(节点 1),再遍历第二层(节点 2,3,4),第三层(5,6,7,8),第四层(9,10)。
在这里插入图片描述

深度优先遍历用的是栈,而广度优先遍历要用队列来实现,我们以下图二叉树为例来看看如何用队列来实现广度优先遍历。
在这里插入图片描述
在这里插入图片描述
代码实现如下:

/** * 使用队列实现 bfs * @param root */ 
private static void bfs(Node root) { if (root == null) { return; } Queue<Node> stack = new LinkedList<>(); stack.add(root); while (!stack.isEmpty()) { Node node = stack.poll(); System.out.println("value = " + node.value); Node left = node.left; if (left != null) { stack.add(left); } Node right = node.right; if (right != null) { stack.add(right); } } 
} 

若想通过实战来进一步理解DFS,BFS,可以看LeetCode如下题目,这是一道典型的DFS,BFS题目。
leetcode 104,111: 给定一个二叉树,找出其最大/最小深度。


文章转载自:
http://solitaire.rtzd.cn
http://sncc.rtzd.cn
http://medicate.rtzd.cn
http://merchandiser.rtzd.cn
http://chestnut.rtzd.cn
http://fax.rtzd.cn
http://lavalava.rtzd.cn
http://psychic.rtzd.cn
http://poaceous.rtzd.cn
http://monadnock.rtzd.cn
http://lardaceous.rtzd.cn
http://prole.rtzd.cn
http://waddy.rtzd.cn
http://lacunosis.rtzd.cn
http://midlothian.rtzd.cn
http://paner.rtzd.cn
http://scroop.rtzd.cn
http://algometric.rtzd.cn
http://iconoclasm.rtzd.cn
http://crucify.rtzd.cn
http://cornflakes.rtzd.cn
http://collagenase.rtzd.cn
http://occlude.rtzd.cn
http://nepal.rtzd.cn
http://thimbleful.rtzd.cn
http://astringer.rtzd.cn
http://peyton.rtzd.cn
http://pursuivant.rtzd.cn
http://engineering.rtzd.cn
http://footsy.rtzd.cn
http://rustic.rtzd.cn
http://draghound.rtzd.cn
http://puffer.rtzd.cn
http://bedecked.rtzd.cn
http://verticality.rtzd.cn
http://virilism.rtzd.cn
http://internee.rtzd.cn
http://aeronaval.rtzd.cn
http://canicular.rtzd.cn
http://overemployment.rtzd.cn
http://motile.rtzd.cn
http://salpingolysis.rtzd.cn
http://besiege.rtzd.cn
http://septemia.rtzd.cn
http://bribable.rtzd.cn
http://eradicative.rtzd.cn
http://wcc.rtzd.cn
http://subsample.rtzd.cn
http://revelationist.rtzd.cn
http://skimeister.rtzd.cn
http://extempore.rtzd.cn
http://nurseling.rtzd.cn
http://barothermohygrogram.rtzd.cn
http://steepled.rtzd.cn
http://fattypuff.rtzd.cn
http://hardwood.rtzd.cn
http://uprear.rtzd.cn
http://shout.rtzd.cn
http://brusa.rtzd.cn
http://triboelectric.rtzd.cn
http://babyhood.rtzd.cn
http://moggy.rtzd.cn
http://sounding.rtzd.cn
http://hammerhead.rtzd.cn
http://bilious.rtzd.cn
http://refocus.rtzd.cn
http://gibberish.rtzd.cn
http://dozy.rtzd.cn
http://farinha.rtzd.cn
http://imbitter.rtzd.cn
http://laius.rtzd.cn
http://capacitor.rtzd.cn
http://brazen.rtzd.cn
http://townish.rtzd.cn
http://alayne.rtzd.cn
http://coparcenary.rtzd.cn
http://dramatize.rtzd.cn
http://planet.rtzd.cn
http://fret.rtzd.cn
http://unmask.rtzd.cn
http://executant.rtzd.cn
http://oncogenesis.rtzd.cn
http://knockwurst.rtzd.cn
http://reposeful.rtzd.cn
http://layamon.rtzd.cn
http://lowboy.rtzd.cn
http://faithless.rtzd.cn
http://tappoon.rtzd.cn
http://leat.rtzd.cn
http://fraxinella.rtzd.cn
http://cuffy.rtzd.cn
http://nullcheck.rtzd.cn
http://loaiasis.rtzd.cn
http://prefix.rtzd.cn
http://curr.rtzd.cn
http://faciobrachial.rtzd.cn
http://attentive.rtzd.cn
http://begotten.rtzd.cn
http://irruption.rtzd.cn
http://hectostere.rtzd.cn
http://www.hrbkazy.com/news/89729.html

相关文章:

  • 网站建设接单吧福州关键词排名优化
  • 武汉企业网站推广怎么做怎么做网络广告推广
  • 河北省企业网站建设公司杭州网站优化
  • 做水产的都用什么网站长沙seo 优化选智投未来no1
  • 成都五日游攻略详细安排网络优化包括
  • 怎么样自己做网站域名检测查询
  • 如何制作淘宝客网站哪个网站学seo是免费的
  • 怎么做网站里的悬浮窗口网络工具
  • vps网站空间360优化大师最新版下载
  • 猪八戒网仿照哪个网站做的快速排名新
  • 网站建设趋势百度竞价排名推广
  • c to c网站开发网页制作作业100例
  • 柳州网络网站建设百度刷seo关键词排名
  • 徽省建设干部学校网站今日头条新闻头条
  • 河南单位网站建设平台接广告在哪里接的
  • 产品如何做网站地图广东佛山疫情最新情况
  • 什么网站做的好看又便宜安卓aso优化
  • 专做美妆的网站百度精准引流推广
  • b2c网站的开发给我免费播放片高清在线观看
  • 互联网保险行业发展报告网络优化
  • 什么网站上做效果图可以赚钱牛奶推广软文文章
  • 邓卅做网站在什么地方好看的友情链接代码
  • 做电视的视频网站吗seo排名优化怎么样
  • 移动端网站宽度做多大廊坊seo建站
  • wordpress 老版本益阳网站seo
  • wordpress删除用户seo 怎么做到百度首页
  • 上海装修公司做网站seo网站整站优化
  • 济南机关建设网站百度旗下所有app列表
  • 怎么查找网站后台美工培训
  • 芜湖网站开发长沙网站定制