深度优先和广度优先是两种很基础的算法,在对算法不是那么看重的前端中依然有着它们的身影。下面是两种算法在遍历html DOM时的应用。
<html>
<head>
<title>深度遍历以及广度遍历测试算法</title>
</head>
<body>
<div class="container">
<div class="node_1">
<div class="node_1_1"></div>
<div class="node_1_2"></div>
<div class="node_1_3"></div>
</div>
<div class="node_2">
<div class="node_2_1"></div>
<div class="node_2_2"></div>
</div>
<div class="node_3"></div>
</div>
<script type="text/javascript">
// 广度优先
// const parentDOM = document.querySelector('.container');
// function breathTravalSal(node){
// const nodes = [];
// const stack = [];
// if(node){
// stack.push(node);
// while(stack.length){
// const item = stack.shift();
// nodes.push(item);
// for(const v of item.children){
// stack.push(v);
// }
// }
// }
// return nodes;
// }
// console.log(breathTravalSal(parentDOM));
//深度优先
// const parentDOM = document.querySelector('.container');
// function deepTravalSal(node){
// const nodes = [];
// const stack = [];
// if(node){
// stack.push(node);
// while(stack.length){
// const item = stack.pop();
// const len = item.children.length;
// nodes.push(item);
// for(let i = len - 1; i >= 0; i--){
// stack.push(item.children[i])
// }
// }
// }
// return nodes;
// }
// console.log(deepTravalSal(parentDOM));
</script>
</body>
</html>