



下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第一文掌握JavaScript樹結構深度優(yōu)先算法在現(xiàn)實生活中,相信每個人對樹都很熟悉,不管是柳樹、楊樹還是桃樹,可以說樹在我們生活中隨處可見;在計算機世界,樹是一種分層結構的抽象模型,
如下圖所示:
樹結構的應用有很多,就比如公司的組織架構,就可以用樹來表示,如下圖:
除了組織架構,像族譜、省市等都可以使用樹結構來表示。
樹有很多的術語,如下圖:
樹:n(n0)個節(jié)點所構成的有限集合,當n=0時,稱為空樹;
節(jié)點的度:節(jié)點的子樹個數,例如B節(jié)點的度就是2,A節(jié)點的度就是3;
樹的度:樹的所有節(jié)點中最大的度數,例如上圖中,樹的度是3;
葉子節(jié)點:度為0的節(jié)點,也叫葉節(jié)點;
子節(jié)點:如上圖;
兄弟節(jié)點:如上圖;
根節(jié)點:如上圖;
樹的深度:樹中所有結點中的最大層次,例如上圖中樹的深度就是3;
節(jié)點的層次:例如E節(jié)點的層次就是3,節(jié)點的層次就是父節(jié)點層次+1,根節(jié)點的層次為1;
路徑:一個節(jié)點到另一個節(jié)點的通道,例如AH的路徑就是ADH;
路徑長度:一個節(jié)點到另一個節(jié)點的距離,例如AH的路徑就是3。
JavaScript中的樹
樹結構可以說是前端中最常見的數據結構之一,比如說DOM樹、級聯(lián)選擇、樹形組件等等;
JavaScript中并沒有提供樹這個數據結構,但是我們可以通過對象和數組來模擬一個樹,
例如下面這段代碼:
consttree={
value:A,
children:[
value:B,
children:[
{value:E,children:null},
{value:F,children:null},
value:C,
children:[{value:G,children:null}],
value:D,
children:[
{value:H,children:null},
{value:I,children:null},
}
廣度優(yōu)先和深度優(yōu)點遍歷算法
所謂的深度優(yōu)先遍歷算法,就是盡可能深的去搜索樹的分支,它的遍歷順序如下圖:
實現(xiàn)思路如下:
訪問根節(jié)點;
對根節(jié)點的children持續(xù)進行深度優(yōu)先遍歷(遞歸);
實現(xiàn)代碼如下:
functiondfs(root){
console.log(root.value)
root.childrenroot.children.forEach(dfs)//與下面一致
//if(root.children){
//root.children.forEach(child={
//dfs(child)
//})
//}
dfs(tree)//這個tree就是前面定義的那個樹
/*結果
*/
可以看到,和圖中的順序是一致的,也就是說我們的算法沒有問題。
所謂的廣度優(yōu)先就是依次訪問離根節(jié)點近的節(jié)點,它的遍歷順序如下圖:
實現(xiàn)思路如下:
創(chuàng)建要給隊列,把根節(jié)點入隊;
把隊頭出隊并訪問;
把隊頭的children依次入隊;
重復執(zhí)行2、3步,直到隊列為空。
實現(xiàn)代碼如下:
functionbfs(root){
//1.新建隊列跟節(jié)點入隊
constq=[root]
//4重復執(zhí)行
while(q.length0){
constnode=q.shift()//2隊頭出隊
console.log(node.value)
//3隊頭children依次入隊
node.children
node.children
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 浙江國企招聘2025嘉興市南湖投資開發(fā)建設集團有限公司下屬公司招聘14人筆試參考題庫附帶答案詳解
- 浙江交通職業(yè)技術學院《語演講與辯論》2023-2024學年第二學期期末試卷
- 武漢航海職業(yè)技術學院《單片機原理及應用C》2023-2024學年第二學期期末試卷
- 德陽城市軌道交通職業(yè)學院《工程機械液壓傳動》2023-2024學年第二學期期末試卷
- 山東中醫(yī)藥大學《焊接質量檢驗與評價》2023-2024學年第二學期期末試卷
- 肇慶學院《社區(qū)工作實驗》2023-2024學年第二學期期末試卷
- 新疆農業(yè)大學《建筑攝影》2023-2024學年第二學期期末試卷
- 河南輕工職業(yè)學院《計算機地圖制圖》2023-2024學年第二學期期末試卷
- 湖南外國語職業(yè)學院《GIS開發(fā)基礎》2023-2024學年第二學期期末試卷
- 廣東外語外貿大學南國商學院《電力專業(yè)俄語》2023-2024學年第二學期期末試卷
- 2025-2030年中國溫泉特色酒店行業(yè)市場深度調研及發(fā)展趨勢與投資前景預測研究報告
- 家政合伙合同協(xié)議書
- 安監(jiān)考試試題及答案
- 【綏化】2025年黑龍江綏化市“市委書記進校園”企事業(yè)單位引才1167人筆試歷年典型考題及考點剖析附帶答案詳解
- 合肥市2025屆高三年級5月教學質量檢測(合肥三模)歷史試題+答案
- 肯德基假期兼職合同協(xié)議
- 貨運司機測試題及答案
- 意識形態(tài)單選試題及答案
- 2025年全國防災減災日班會 課件
- SL631水利水電工程單元工程施工質量驗收標準第1部分:土石方工程
- (二調)武漢市2025屆高中畢業(yè)生二月調研考試 英語試卷(含標準答案)+聽力音頻
評論
0/150
提交評論