js实现树的深度优先搜索、广度优先搜索
程序员文章站
2022-05-23 19:43:44
...
示例数据
var tree = {
value:"A",
children:[
{
value:"B",
children:[
{
value:"D",
children:[]
},
{
value:"E",
children:[]
}
]
},
{
value:"C",
children:[
{
value:"F",
children:[]
},
{
value:"G",
children:[]
}
]
}
]
}
深度优先搜索:ABDECFG
思路:利用递归,递归根节点的每个孩子
function dfs(root){ //深度优先遍历的方法
console.log(root.value);
root.children.forEach(function(item){
dfs(item); //递归调用
})
}
dfs(tree);//调用深度优先算法 ABDECFG
广度优先搜索:ABCDEFG
思路:利用队列先进先出的思想来解决;js没有队列的数据结构,可以用数组来实现
function bfs(root){ //广度优先所有的方法
let queue = [root]; //创建一个假的队列,其实是数组
while(queue.length>0){
let node = queue.shift(); //出队队首元素
console.log(node.value); //输出节点值
node.children.forEach(function(item)=>{
queue.push(item);
})
}
}
bfs(tree); //调用广度优先搜索方法 ABCDEFG
上一篇: 一道面试题:求一个正整数的因子个数