# 深度遍历
基础:以dom树遍历为例,从起点扎到底后再从起点扎到底的方式遍历。
思路:利用递归,先进后遍历
<!-- 深度优先算法,遍历这个dom树 -->
<div id="root" class="root">
<div class="container">
<section class="sidebar">
<ul class="menu"></ul>
</section>
<section class="main">
<article class="post"></article>
<p class="copyright"></p>
</section>
</div>
</div>
const rootEl = document.getElementById('root');
const result = [];
// 递归遍历
(function dig(el){
result.push(el);
for (const child of el.children) {
dig(child);
}
})(rootEl);
console.log(result);
/*
0: div#root.root
1: div.container
2: section.sidebar
3: ul.menu
4: section.main
5: article.post
6: p.copyright
*/
# 广度遍历
思路:利用队列,先进先遍历
const rootEl = document.getElementById("root");
function dig(rootNode) {
const result = [];
const queue = [rootNode];
while (queue.length) {
const el = queue.shift();
result.push(el);
for (const child of el.children) {
queue.push(child);
}
}
console.log(result);
}
dig(rootEl);
← 冒泡、插入、希尔排序 初始 →