为什么DOM树顺序优先,深度优先遍历



为什么DOM树顺序是preorder, depth-first traversal ?

与BFT等其他遍历相比,这种设计选择的优势是什么?

我只是在看DOM标准,发现前面和后面的定义:

如果对象A和B在同一棵树中,则对象A在对象B之前A按树的顺序排在B前面

如果对象A和B在同一棵树中,则对象A在对象B之后A按树的顺序排在B后面。

就像大多数编程范例一样,Web平台具有有限的分层树结构,简称树。树的顺序是预先排序,深度优先遍历。

深度优先遍历通常是最简单的遍历样式,因为您可以递归地或使用显式堆栈进行遍历;宽度优先需要一个队列,从某种意义上说,这是一个更复杂的数据结构。但我认为有一个比传统或简单更简单的答案:对(X)HTML树的深度搜索遍历导致按表示顺序遍历文本节点。

考虑这个相对简单的HTML子树。

或者,在HTML中:

<p>Consider this <em>relatively</em> simple <a href="http://en.wikipedia.org/wiki/HTML">HTML</a> subtree</p>

作为树(省略空格和属性):

                        <P>
                         |
      +----------+-------+-----+------+               
______|______  __|__  ___|__  _|_  ___|___
Consider this   <EM>  simple  <A>  subtree
                 |             |
             ____|_____      __|__
             relatively       HTML

深度优先遍历:

<P>, Consider this, <EM>, relatively, simple, <A>, HTML, subtree

广度优先遍历:

<P>, Consider this, <EM>, simple, <A>, subtree, relatively, HTML

深度优先搜索需要按树的高度排序的内存,但宽度优先搜索需要按树的顶点基数排序的内存。换句话说,与深度优先的搜索相比,广度优先的搜索更占用内存。

最新更新