//数组每个元素描述的父子节点,节点中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))