bfe.dev 是一个针对前端的刷题网站,像是前端的LeetCode。该系列文章是我在下面的刷题日记。
题目
BFE.dev#104 104. 按层遍历DOM树
剖析
按层遍历,所以初始状态是
[div]
下一层
[p, p, div]
下一层
[button, a, p, div]
能够看到咱们只须要不停的从右边取出元素,而后将其子元素从左边不停放入即可。这用queue实现。
来,放上代码吧。
其实现是BFS,并不苦难。并且咱们只须要返回所有元素,并不需要思考每一层的边界。
/**
* @param { HTMLElement } root
* @returns { HTMLElement[] }
*/
function flatten(root) {
if (root === null) return []
const queue = [root]
const result = []
while (queue.length > 0) {
const head = queue.shift()
result.push(head)
queue.push(...head.children)
}
return result
}
通过撒花
感激浏览,心愿有所帮忙。有趣味能够本人试试。
发表回复