Dom的深度優先遍歷和廣度優先遍歷

2022-02-03 20:01:06 字數 2161 閱讀 5016

doctype html

>

<

html

lang

="en"

>

<

head

>

<

meta

charset

="utf-8"

>

<

title

>深度遍歷和廣度遍歷測試

title

>

<

style

type

="text/css"

>

style

>

head

>

<

body

>

<

div

class

="box"

>

<

ul class

="menus"

>

<

li class

="item1"

><

i class

="item1-icon"

>

i><

span

class

="item1-content"

>選單1

span

>

li>

<

li class

="item2"

><

i class

="item2-icon"

>

i><

span

class

="item2-content"

>選單2

span

>

li>

<

li class

="item3"

><

i class

="item3-icon"

>

i><

span

class

="item3-content"

>選單3

span

>

li>

ul>

div>

<

script

>

console.log(

'深度優先遞迴');

dftrecur(document.body,,

function

(item));

console.log(

'深度優先非遞迴');

let res

=dft(array.from(document.body.children),

function

(item)

console.log(item);

});console.log(

'廣度優先遞迴');

bftrec(document.body,);

console.log(

'廣度優先非遞迴');

bft(array.from(document.body.children)); //

深度優先搜尋的遞迴寫法

function

dfsrecur(root,stack,fvistor)

}//當前節點及其子節點都不滿足條件就出棧if(

!b) stack.pop();

} returnb;}

//深度優先遍歷的遞迴寫法,深度優先遍歷遞迴,不需要使用棧,通常是使用先序遍歷,即先遍歷根節點,再遍歷所有子節點

function

dfsrecur(root,stack,fvistor)

}} }//

深度優先遍歷的非遞迴寫法

function

dft(root,fvistor)

} }//

廣度優先遍歷的遞迴寫法,廣度優先的遞迴和非遞迴寫法都需要佇列

function

bftrec(root,queue,fvistor)}//

廣度優先遍歷的非遞迴寫法

function

bft(root,fvistor)

}}script

>

body

>

html

>

深度優先遍歷 和 廣度優先遍歷

圖的廣度優先搜尋是樹的按層次遍歷的推廣,它的基本思想是 首先訪問初始點vi,並將其標記為已訪問過,接著訪問vi的所有未被訪問過的鄰接點 vi1,vi2,vi t,並均標記已訪問過,然後再按照vi1,vi2,vi t的次序,訪問每乙個頂點的所有未被訪問過的鄰接點,並均標記為已訪問過,依次類推,直到圖中...

廣度優先遍歷和深度優先遍歷

深度優先遍歷 廣度優先遍歷是圖的一種遍歷方式,它的思想就是遍歷這個點相鄰的所有的點,再對這些點進行廣度優先遍歷.如下圖所示 首先我們從a點開始遍歷,然後遍歷所有和a相鄰的點f和點g 然後對f和點g進行遍歷進行遍歷,得到點e,h,k和b 然後再繼續,知道所有的點都遍歷完成 首先,我們先定義圖graph...

廣度優先遍歷和深度優先遍歷

1.1 概念 以初始節點v0作為第一層節點,接著訪問它。然後迭代第一層節點即v0,訪問它相鄰接的沒有訪問過的節點比如v1,v2,v1,v2加入到第二層節點 迭代第二層節點v1,v2,v1,v2依次訪問相鄰接的沒有訪問過的節點,重複上述步驟直至所有節點都被訪問過為止。如圖所示首先訪問根節點v0,並將v...