深度优先搜索和广度优先搜索的一种遍历方式(小白)

一、深度优先搜索的便历

深度优先搜索(Depth First Search,DFS)是一种用于遍历或搜索树或图的算法。它从起始节点开始,沿着一条路径一直遍历到最深处,然后回溯到上一个节点,再继续遍历下一条路径,直到遍历完所有节点。

这有一张图:

深度优先搜索,大概意思就是沿着一条路,把这个路径上面的所有数字搜索出来。

深度优先搜索需要借助栈来辅助遍历。

而栈的特点就是先进后出。

遍历也分为三种方式:分别是前序遍历、中序遍历和后序遍历。前中后的命名是根据根节点的遍历顺序来决定的。前序遍历就是先中间,再左边,最后右边。碰到叶子节点或者该节点没有子节点可便历时方可出栈。

后序遍历:首先根节点1入栈,判断该节点是否有子节点,若有,则节点2入栈,判断节点2是否有子节点,若有,5入栈,判断节点5是否有子节点,没有,5出栈,再次判断2是否有其他节点,有,6进栈,判断6是否有子节点,没有,6出栈,然后返回结点2,判断是否还有节点,没有,2出栈,判断1是否有其他节点,有,3进栈........以此类推,中序便历的结果为:56278391

二、广度优先搜索的一种遍历方式

同样是这张图:

广度优先搜索使用队列来管理待访问的节点,首先将起始节点加入队列,然后从队列中取出一个节点进行访问,将其未访问过的相邻节点加入队列。然后再从队列中取出下一个节点进行访问,重复上述过程,直到队列为空。

遍历:首先节点1进入队列,判断队列是否为空,判断节点1是否有子节点,此时队列不为空,节点1出队列。接下来节点1的3个子节点进入队列分别为234。判断此时队列是否为空,判断每个节点是否有子节点。节点二出队列,节点二有两个子节点,此时二的两个子节点五和六进入队列,判断此时队列是否为空,判断节点三是否有子节点,3出队列,三的子节点七和八进入队列,判断队列是否为空,判断节点四是否有子节点,4的 一个子节点9进入队列。此时队列中有56789判断队列是否为空并逐个判断是否有子节点然后逐个输出。最后结果为:123456789

以上内容仅个人纪录学习过程

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值