const tree = {
name: 'root',
children: [
{
name: 'c1',
children: [
{
name: 'c11',
children: []
},
{
name: 'c12',
children: []
}
]
},
{
name: 'c2',
children: [
{
name: 'c21',
children: []
},
{
name: 'c22',
children: []
}
]
}
]
}
// 深度优先
const dfs = (source) => {
let target = [], stack = []
stack.push(source)
while (stack.length) {
let node = stack.pop()
target.push(node.name)
for (let i = node.children.length - 1; i >= 0; i--) {
stack.push(node.children[i])
}
}
return target
}
// 广度优先
const bfs = (source) => {
let target = [], queue = []
queue.push(source)
while(queue.length){
let node = queue.shift()
target.push(node.name)
for(let i = 0; i < node.children.length; i++){
queue.push(node.children[i])
}
}
return target
}
console.log(bfs(tree))
console