簡體   English   中英

為什么DOM樹oder預訂,深度優先遍歷?

[英]why is DOM tree oder preorder, depth-first traversal?

為什么DOM樹oder preorderdepth-first traversal

與其他遍歷如BFT相比,此設計選擇有哪些優勢?

我只是在研究DOM標准,並找到了前后的定義:

如果A和B在同一樹中並且A以樹順序出現在B之前,則對象A在對象B之前。

如果A和B在同一樹中,並且A以樹順序出現在B之后,則對象A跟隨對象B.

就像大多數編程范例一樣,Web平台具有有限的分層樹結構,簡稱為樹。 樹順序是預訂,深度優先遍歷。

深度優先遍歷通常是最簡單的遍歷樣式,因為您可以遞歸或使用顯式堆棧執行此操作; 廣度優先需要一個隊列,在某種意義上,這是一個更復雜的數據結構。 但我認為答案比傳統或簡單更簡單:(X)HTML樹的深度搜索遍歷導致文本節點以呈現順序遍歷。

考慮這個相對簡單的HTML子樹。

或者,以原始形式:

<p>Consider this <emph>relatively</emph> simple <a href="...">HTML</a> subtree</p>

作為一棵樹(省略空白和屬性):

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

深度優先遍歷:

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

廣度優先遍歷:

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

深度優先搜索需要按照樹高度的順序存儲,但是廣度優先搜索需要按照樹頂點的基數順序存儲。 換句話說,廣度優先搜索是與深度優先搜索相比的內存占用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM