2013-04-19 2 views
6

왜 DOM 트리가 preorder, depth-first traversal입니까?왜 DOM 트리 oder preorder, depth-first traversal입니까?

BFT와 같은 다른 탐색에 비해이 디자인 선택의 장점은 무엇입니까?

난 그냥 DOM standard로보고 이전 및 다음의 정의 발견 된

: A와 B가 같은 나무 에 있고 A가 나무에서 B 앞에 오는 경우

는 객체 A는 객체 B를 선행됩니다 주문.

A와 B가 동일한 트리에있는 경우 객체 A가 객체 B를 따르고 이고 A가 트리 순서대로 B 뒤에옵니다.

대부분의 프로그래밍 패러다임과 마찬가지로 웹 플랫폼은 간단하게 명명 된 나무 인 계층 트리 구조를 가지고 있습니다. 트리 순서는 선주문, 깊이 우선 탐색입니다.

+3

이렇게하면 http://cs.stackexchange.com/에서 더 잘 수행 될 수 있습니다. – j08691

답변

11

깊이 우선 탐색은 재귀 적으로 또는 명시 적 스택으로 수행 할 수 있기 때문에 일반적으로 가장 쉬운 탐색 스타일입니다. 우선적으로 어떤 의미에서는 더 복잡한 데이터 구조 인 대기열이 필요합니다. 그러나 전통이나 단순함보다 간단한 대답이 있다고 생각합니다. (X) HTML 트리의 깊이 검색 통과로 인해 텍스트 노드가 표시 순서대로 이동합니다.

이것을 이라고하면 비교적이다. HTML 하위 트리.

또는 원시 형태 :

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

깊이 우선 횡단 :

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

폭 우선 나무로

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

(공백 및 속성을 떠나) 가로 지르다 :

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

깊이 우선 검색은 트리의 높이 순서로 메모리가 필요하지만 너비 우선 검색은 트리의 정점의 카디널리티 순서대로 메모리가 필요합니다. 다시 말해, 폭 우선 검색은 깊이 우선 검색에 비해 메모리 검색입니다.