深度与广度优先遍历
- 深度优先遍历:
尽可能深的搜索树的分支
- 广度优先遍历:
优先访问离根节点最近的节点


深度优先遍历算法口诀
- 先访问
根节点
- 对根节点的
children挨个进行深度优先遍历
深度优先遍历
const dfs = (root) => {
console.log(root.val);
root.children.forEach(dfs);
};
dfs(tree);
const tree = {
val: 'a',
children: [
{
val: 'b',
children: [
{
val: 'd',
children: [],
},
{
val: 'e',
children: [],
}
],
},
{
val: 'c',
children: [
{
val: 'f',
children: [],
},
{
val: 'g',
children: [],
}
],
},
],
};
广度优先遍历算法口诀

- 新建一个队列,把根节点入队
- 把对头出队并访问
- 把对头的children挨个入队
- 重复第二第三步,直到队列为空
广度优先遍历
const bfs = (root) => {
const q = [root];
while (q.length > 0) {
const n = q.shift();
console.log(n.val);
n.children.forEach(child => {
q.push(child);
});
}
};
bfs(tree);