[英]why is DOM tree oder preorder, depth-first traversal?
為什么DOM樹oder preorder
, depth-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.