为了账号安全,请及时绑定邮箱和手机立即绑定

【九月打卡】第2天 数据结构之“图”

标签:
JavaScript

课程名称: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

今天学习了数据结构之“图”,感觉有点难理解,有感觉图能够很巧妙的解决一些问题,算法逻辑思维还是不够,对自己说一句,加油😀~

坚持打卡,坚持学习!明天见💪~

https://img1.sycdn.imooc.com//6316b3cb00016b9c24021237.jpg

https://img1.sycdn.imooc.com//6316b3ee00010a6d24011230.jpg

https://img1.sycdn.imooc.com//6316de780001b0da24101238.jpg

点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消