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}

通过撒花

感激浏览,心愿有所帮忙。有趣味能够本人试试。