深度优先和广度优先遍历

2023-11-06  本文已影响0人  lvyweb

图的遍历是指,从给定图中任意指定的顶点(称为初始点)出发,按照某种搜索方法沿着图的边访问图中的所有顶点,使每个顶点仅被访问一次,这个过程称为图的遍历。遍历过程中得到的顶点序列称为图遍历序列。
图的遍历过程中,根据搜索方法的不同,又可以划分为两种搜索策略:+
深度优先搜索(DFS,Depth First Search)
广度优先搜索(BFS,Breadth First Search)

实现深度优先遍历的关键在于回溯,实现广度优先遍历的关键在于回放。

const tree  = 
    {
        val:'a',
        children:[
            {
                val:'b',
                children:[{
                    val:'c',
                    children:[]
                  },
                  {
                    val:'d',
                    children:[]
                  }
                ]
            },
            {
                val:'e',
                children:[{
                    val:'f',
                    children:[]
                  },
                  {
                    val:'g',
                    children:[]
                  }
                ]
            },
        ]
    }
//深度优先遍历
const dfs = (n)=>{
    console.log(n.val)
    n.children.forEach(item=>{
        dfs(item)
    })
}
// dfs(tree)

//广度遍历
const guand = (n)=>{
    const q = [n]
    while(q.length>0){
        const root = q.shift()
        console.log(root.val)
        root.children.forEach(item=>{
            q.push(item)
        })
    }
}
guand(tree)
//二叉树的先中后
上一篇 下一篇

猜你喜欢

热点阅读