课程名称:JavaScript版数据结构与算法
课程章节:第9章 数据结构之“图”
主讲老师:lewis
课程内容:
今天学习的内容包括:
9-1 图简介——图是网络结构的抽象模型。
9-2 图的深度广度优先遍历——跟树的优先遍历模式同理:尽可能深/从根节点开始。
9-3 LeetCode:65. 有效数字——验证给定的字符串是否可以解释为十进制数字。
课程收获:
图简介
1、图是网络结构的抽象模型,是一组由边连接的节点,图可以表示任何二元关系。
2、JS中没有图,但是可以用 Object 和 Array 构件图。
3、图的表示法:邻接矩阵、邻接表、关联矩阵…。
4、常用操作:深度优先遍历、广度优先遍历。
图的深度广度优先遍历
深度优先遍历:尽可能深的搜索图的分支。
1、访问根节点。
2、对根节点的没访问过的相邻节点挨个进行深度优先遍历。
graph[n].forEach(c => {
if(!visited.has(c)){
dfs(c)
}
})
广度优先遍历:先访问离根节点最近的节点。
1、新建一个队列,把根节点入队。
2、把队头出队并访问。
3、把队头的没访问过的相邻节点入队。
4、重复第二、三步,直到队列为空。
graph[n].forEach(c => {
if(!visited.has(c)){
q.push(c)
visited.add(c)
}
})
有效数字:验证给定的字符串是否可以解释为十进制数字
1、构建一个表示状态的图。
2、遍历字符串,并沿着图走,如果到了某个节点五路可走就返回false。
3、遍历结束,如走到了3/5/6,就返回true,否则返回false。
4、根据图所示可以看到共有8个节点,每个节点对应的有连接的节点,使用图表达出来,然后遍历处理即可。
if(state === 3 || state === 5 || state === 6){
return true
}
return false
今天学习了数据结构之“图”,感觉有点难理解,有感觉图能够很巧妙的解决一些问题,算法逻辑思维还是不够,对自己说一句,加油😀~
坚持打卡,坚持学习!明天见💪~
热门评论
加油,一起拿勋章。