亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

【學習打卡】第19天 數據結構和算法

数据结构 - 图

图是什么

  • 图是网络结构的抽象模型,是一组由边连接的节点
  • 图可以表示任何二元关系,比如道路,航班

图的表示法

  • js中用Object 和 Array来表示图

  • 图的表示法: 邻接矩阵、邻接表、关联矩阵…

邻接矩阵

图片描述

邻接表

图片描述

图的深度和广度优先遍历

深度优先遍历

  1. 访问根节点
  2. 对根节点的没有访问过的相邻节点进行深度优先遍历
const graph = {
  0: [1, 2],
  1: [2],
  2: [0, 3],
  3: [3]
}


const visited = new Set();
const dfs = (n) => {
  console.log(n)
  visited.add(n)
  graph[n].forEach(item => {
    if (!visited.has(item)) {
      dfs(item)
    }
  });
}

dfs(2)  // 2 0 1 3

广度优先遍历

  1. 新建一个队列,把根节点入队
  2. 对头出队并访问
  3. 把对头的没有访问过的相邻节点入队
  4. 重复二、三步,直至队列为空
const visited = new Set();
const bfs = (n) => {
  const queue = [n];
  visited.add(n);
  while (queue.length) {
    const o = queue.shift();
    console.log(o);
    graph[o].forEach(item => {
      if (!visited.has(item)) {
        visited.add(item);
        queue.push(item);
      }
    });
  }
}

bfs(2)  // 2 0 3 1
點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
Web前端工程師
手記
粉絲
3
獲贊與收藏
9

關注作者,訂閱最新文章

閱讀免費教程

  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消