本题难度:⭐ ⭐ ⭐
本题类型:算法、手写
阿林最近忙爆了,真的没时间认真写文章了,但是再忙也不能忘了学习,不然就懈怠了,最近多更新点前端面试中出现的高频算法题吧,这个写起来简单。
题目描述
请使用深度优先搜索遍历一棵 Dom 树,最终把每个节点存进一个数组里,返回这个数组。
举个例子,输入的 html 和返回结果如下图:
题目分析
这题看似很高大上,实际上就是树的前序遍历,套树前序遍历的公式即可。
// 二叉树前序遍历,刷题公式
function preorderTraversal (root) {
let res = []
function dfs(root) {
if (!root) {
return res
}
res.push(root.val)
dfs(root.left)
dfs(root.right)
}
dfs(root)
return res
}
需要注意的是 DOM 树每一层有多个节点,不再是二叉树遍历 left 和 right,而是遍历每个节点的 children。
编码实现
随便写一个 html 文件,里面放几个元素
<!DOCTYPE html>
<html lang="en">
<head>