tree结构
结构抽象图
代码结构
const tree = {
val: 'a',
children: [{
val: 'b',
children: [{
val: 'c',
children: []
}, {
val: 'd',
children: []
}]
}, {
val: 'e',
children: [{
val: 'f',
children:[]
}]
}]
}
深度优先
深度优先顺序抽象图
深度优先实现(递归)
const depth(root){
console.log(root.val) //output:"a" "b" "c" "d" "e" "f"
root.children.forEach(depth)
}
depth(tree)
深度优先遍历是指从某个顶点出发,首先访问这个顶点,然后找出刚访问这个结点的第一个未被访问的邻结点,然后再以此邻结点为顶点,继续找它的下一个顶点进行访问。重复此步骤,直至所有结点都被访问完为止。
广度优先
广度优先顺序抽象图
广度优先实现
const wide(root){
const arr = [root]
while(arr.length>0){
const o = arr.unshift()
console.log(o.val)
o.children.forEach(item=>{
arr.push(item)
})
}
}
广度优先遍历是从某个顶点出发,首先访问这个顶点,然后找出刚访问这个结点所有未被访问的邻结点,访问完后再访问这些结点中第一个邻结点的所有结点,重复此方法,直到所有结点都被访问完为止。