美文网首页
深度优先DFS和广度优先BFS遍历

深度优先DFS和广度优先BFS遍历

作者: Mr无愧于心 | 来源:发表于2022-04-02 16:51 被阅读0次

一般用于dom树的或树形菜单的结构

let tree=[
    {
    children:[
        {
            children:[
                {
                    children:[
                        'a',
                        {children:'b'}
                    ]
                },
                {
                    children:'c'
                }
            ]
        },
        {children:[{children:['d',{children:'e'}]},{children:'f'}]},
        {children:[0]}
        ]
    }
]

深度优先

//递归
function deepFirst(tree){
    let res=[];
    function deepIn(tree){
        if(tree&&Array.isArray(tree)){
            for(let i=0;i<tree.length;i++){
                if(tree[i].children){
                    deepIn(tree[i].children)
                }else{
                    res.push(tree[i]) 
                }
            }
        }else{
            res.push(tree)
        }
    }
    deepIn(tree);
    return res
}

//非递归
function deepFirst(tree){
    let res=[];
    let temp=tree;
    while(temp.length){
        let item=temp.pop();
        if(item.children){
            for(let i= item.children.length-1;i>=0;i--){
                temp.push(item.children[i])
            }
        }else{
            res.push(item);
        }
    }
    return res;
}

广度优先

//非递归实现
function breadthFirst(tree){
    let temp=tree;
    let res=[];
    while(temp.length){
        if(temp[0].children){
            Array.isArray(temp[0].children)?temp.push(...temp[0].children):temp.push(temp[0].children)
        }else{
            res.push(temp[0])
        }
        temp.shift();
    }
    return res;
}

相关文章

  • 无向图DFS和BFS

    基本结构 DFS深度优先遍历 BFS广度优先遍历 符号图

  • BFS和DFS

    BFS:广度优先搜索 DFS:深度优先搜索 树的遍历 BFS:A B C D E F G H I DFS: A ...

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

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

  • 74_图的遍历(BFS)

    关键词:MatrixGraph和ListGraph的选择方式、图的遍历概念、广度优先(BFS)、深度优先(DFS)...

  • 算法-二叉树的遍历实现

    简述 二叉树的遍历分 DFS【深度优先遍历】 和 BFS【广度优先遍历】 两类,其中 DFS 又分为前序遍历,中序...

  • 基本数据结构

    一.图二.树 一.图 1.图的遍历: 通过深度优先遍历DFS和广度优先遍历BFS两种方式。深度优先遍历0 1 2 ...

  • 刷题7 剑指 Offer — DFS

    树的遍历方式总体分为两类:深度优先搜索(DFS)、广度优先搜索(BFS);常见的 DFS : 先序遍历、中序遍历、...

  • 图的深度优先遍历和广度优先遍历

    图的遍历主要有深度优先搜索 DFS(depth-first search) 和广度优先搜索BFS( breadth...

  • 数据结构基础--栈和队列

    目录 基本性质 栈和队列的基本操作 双端队列和优先级队列 深度优先遍历(DFS)和广度优先遍历(BFS) 递归函数...

  • leecode岛屿数量

    题目描述可用解法DFS 深度优先遍历BFS 广度优先遍历算法思路:下列代码用BFS,循环遍历输入的二维列表如果遇到...

网友评论

      本文标题:深度优先DFS和广度优先BFS遍历

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