美文网首页
js广度优先和深度优先

js广度优先和深度优先

作者: oh_flying | 来源:发表于2022-05-22 23:46 被阅读0次

今天面试,有个算法题,说用广度优先的算法,打印出节点的值。
首先说明一下什么是广度优先,什么是深度优先,举个例子来说,广度就是横向发展,和我们程序员一样,就是先全栈横向发展,等都会了,再一个一个往深了学,也就是一层一层的学。深度就是纵向发展,就是比如说,你先学js,把js精通了,然后是html,也精通了,最后再学css,也学精通了,就算完成了。对于程序员来说,我感觉深度和广度要结合着来,自己要把握好一个度。
对于算法来说,就要么深度遍历,要么广度遍历。算法这块我后面应该会系统的更新一下,所以这篇就完全记录一下自己今天遇到的面试题,数据结构和算法网盘接下来要系统的学一下,也会及时更新一下博客的。
首先数据是这样子的:

const data = [
    {name:'中国', 
    children:[
        {name:'北京',
        children:[
            {name:'海淀'}
        ]},
        {
            name:'浙江',
            children:[
                {name:'杭州'}
            ]
        }
    ]}
]

广度要求输出:[ '中国', '北京', '浙江', '海淀', '杭州' ]
深度要求输出:[ '中国', '北京', '海淀', '浙江','杭州' ]
首先看看广度优先的实现方式,这个不是最优解,以后会更新其他实现方式:

function guangdu(node) {
    let res = []
    let arr = node
    while(arr.length > 0) {
        [...arr].forEach(item => {
            res.push(item.name)
            item.children && arr.push(...item.children)
            arr.shift()
        })
    }
    return res
}

接下来看看深度优先的实现方式:

function shendu(data) {
    const res = []
    data.forEach(item => {
        let map = data => {
            res.push(data.name)
            data.children && data.children.forEach(item => map(item))
        }
        map(item)
    })
    return res
}
个人觉得深度比较难理解一点,广度比较好理解一点。

相关文章

  • Python爬虫:关于 广度优先 和 深度优先

    广度优先和深度优先 关于广度优先和深度优先,首先,不管是广度还是深度,都需要定义一个爬取的深度 crawl_dee...

  • 爬虫(3-5)

    深度优先和广度优先1 网站的树结构2 深度优先算法和实现3 广度优先算法和实现 深度优先输出A,B,D,E,I,C...

  • js广度优先和深度优先

    今天面试,有个算法题,说用广度优先的算法,打印出节点的值。首先说明一下什么是广度优先,什么是深度优先,举个例子来说...

  • 深度优先和广度优先查找以及拓扑排序

    深度和广度优先查找 归属:蛮力法 简称:DFS(深度优先查找)、BFS(广度优先查找) 思想:DFS: 深度优先查...

  • 5. 深度优先、广度优先

    1. 二叉树的深度优先遍历和广度优先遍历2. 深度优先搜索递归和非递归实现 深度优先(DFS):前序遍历 广度优先...

  • 搜索

    一、深度优先搜索 图深度优先遍历、深度优先搜索算法求有权图两点最短路径 二、广度优先搜索 图广度优先遍历、广度优先...

  • python分布式爬虫搜索引擎实战-2-深度优先和广度优先

    深度优先和广度优先 目录: 网站的树结构 深度优先算法和实现 广度优先算法和实现 网站url树结构:分层设计 子域...

  • 前端常见面试题目(六)

    一、介绍下深度优先遍历和广度优先遍历,如何实现 通过用深度优先遍历和广度优先遍历对这个dom树进行查找来理解1、 ...

  • js-树的遍历

    数据 广度优先遍历 深度优先遍历 深度优先不递归

  • 数据结构与算法-图的遍历

    一、深度优先 二、广度优先

网友评论

      本文标题:js广度优先和深度优先

      本文链接:https://www.haomeiwen.com/subject/oavlprtx.html