图的遍历是指,从给定图中任意指定的顶点(称为初始点)出发,按照某种搜索方法沿着图的边访问图中的所有顶点,使每个顶点仅被访问一次,这个过程称为图的遍历。遍历过程中得到的顶点序列称为图遍历序列。
图的遍历过程中,根据搜索方法的不同,又可以划分为两种搜索策略:+
深度优先搜索(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)
//二叉树的先中后