数据结构笔记(一)深度优先搜索和广度优先搜索

怎么记忆

今天整理关于深度优先遍历和广度优先遍历的笔记,这两种遍历方法我通过类比二叉树的先序遍历和层次遍历来记忆,二叉树的这两种方法我将在后续的笔记整理中详细介绍。

二叉树的线序遍历

二叉树的先序遍历是指先访问根节点,再访问左子树和右子树,若左子树有左右子树,则递归调用重复上述过程。直到访问完所有结点,则结束调用。

深度优先搜索(DFS)

与先序遍历类似,从根节点开始往下遍历,选择最深的路径进行搜索,将要进行结点存入栈中,不需要遍历的结点则从栈中弹出。
如下无向图:
在这里插入图片描述
从A开始搜索,A相连且未被遍历的有B和C,选择B继续填入栈中

在这里插入图片描述
接着将C填入栈中,
在这里插入图片描述
由于与C相连的B已经被遍历过,因此C不存在相连且未被遍历的点,则弹出C

在这里插入图片描述
再遍历B,按以上步骤,则D未被遍历,则将D入栈

在这里插入图片描述

E、A按以上步骤,可依次类推,最终F无相连未遍历的结点,则弹出F,最终遍历完成。

在这里插入图片描述

则上图的深度遍历序列为ABCDEF

二叉树的层次遍历

层次遍历相对简单,将每一层的结点从上到下、从左到右访问,直到访问完所有结点。

广度优先搜索(BFS)

广度优先搜索从选定的一个结点开始,不断地往下层遍历,直到搜索到目标结点。

例如:
在这里插入图片描述

A入队,以及将与A相邻的BD元素入队,此时队列元素为ABD
在这里插入图片描述
A遍历完成,将A出队,遍历B和D,首先遍历B,与B相邻的CE入队,队列元素为BDCE

在这里插入图片描述
B完成遍历,将B出队,此时与D唯一相邻的E也访问了,因此D也出队

在这里插入图片描述

CE重复上述步骤,直到访问完所有结点

在这里插入图片描述
序列为ABDCEF

在这里插入图片描述

发现数据结构通过图片来理解会比看文字和代码更容易,利用图片理解了基本思路之后就可以开始写代码加深印象和理解。在后面我会整理一些平时的代码作业及笔记,有问题欢迎指出,感谢。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值