//数组每个元素描述的父子节点,节点中node值代表当前节点值,children为子节点node值,node值不重复,请实现对下面key值的层次遍历输出
let tree = [{
node: 2,
children: [3, 9, 4]
},
{
node: 7,
children: [2]
},
{
node: 3,
children: [6]
},
{
node: 4,
children: [5]
},
{
node: 5,
children: [8]
},
{
node: 10,
children: [11]
},
]
const visited = new Set();
let sum = ''
let arr = []
function bfs(index) {
tree.map((item, idex) => {
if (item.node == index) {
visited.add(item.node)
arr.push(item.node)
sum = idex
}
})
if (tree[sum]) {
tree[sum].children.forEach((c) => {
if (!visited.has(c)) {
visited.add(c);
arr.push(c)
bfs(c)
}
});
}
};
var ret = function(arr) {
var res = [arr[0]];
for (var j = 1; j < arr.length; j++) {
var repeat = false;
for (var i = 0; i < res.length; i++) {
if (arr[j] == res[i]) {
repeat = true;
break;
}
}
if (!repeat) {
res.push(arr[j]);
}
}
return res;
}
console.log(bfs(10))
console.log(bfs(7), visited)
console.log(ret(arr))
树的深度优先遍历与广度优先遍历
最新推荐文章于 2024-03-13 17:45:14 发布
本文介绍了一种使用JavaScript实现的层次遍历算法,该算法可以遍历一个由节点组成的树形结构,并输出所有节点的值。文章通过具体实例展示了如何通过广度优先搜索(BFS)来实现这一过程。
1081

被折叠的 条评论
为什么被折叠?



