JavaScript樹的深度優(yōu)先遍歷和廣度優(yōu)先遍歷算法示例
本文實例講述了JavaScript樹的深度優(yōu)先遍歷和廣度優(yōu)先遍歷算法。分享給大家供大家參考,具體如下:
1、深度優(yōu)先遍歷的遞歸寫法
function deepTraversal(node) { var nodes = []; if (node != null) { nodes.push(node); var children = node.children; for (var i = 0; i < children.length; i++) deepTraversal(children[i]); } return nodes; }
2、深度優(yōu)先遍歷的非遞歸寫法
function deepTraversal(node) { var nodes = []; if (node != null) { var stack = []; stack.push(node); while (stack.length != 0) { var item = stack.pop(); nodes.push(item); var children = item.children; for (var i = children.length - 1; i >= 0; i--) stack.push(children[i]); } } return nodes; }
3、廣度優(yōu)先遍歷的遞歸寫法:
報錯:Maximum call stack size exceeded(…)
function wideTraversal(node) { var nodes = []; var i = 0; if (!(node == null)) { nodes.push(node); wideTraversal(node.nextElementSibling); node = nodes[i++]; wideTraversal(node.firstElementChild); } return nodes; }
4、廣度優(yōu)先遍歷的非遞歸寫法
function wideTraversal(selectNode) { var nodes = []; if (selectNode != null) { var queue = []; queue.unshift(selectNode); while (queue.length != 0) { var item = queue.shift(); nodes.push(item); var children = item.children; for (var i = 0; i < children.length; i++) queue.push(children[i]); } } return nodes; }
更多關于JavaScript相關內(nèi)容感興趣的讀者可查看本站專題:《JavaScript數(shù)據(jù)結構與算法技巧總結》、《JavaScript數(shù)學運算用法總結》、《JavaScript排序算法總結》、《JavaScript遍歷算法與技巧總結》、《JavaScript查找算法技巧總結》及《JavaScript錯誤與調(diào)試技巧總結》
希望本文所述對大家JavaScript程序設計有所幫助。
- 詳解JavaScript中的forEach()方法的使用
- js中的for如何實現(xiàn)foreach中的遍歷
- JavaScript forEach()遍歷函數(shù)使用及介紹
- javascript forEach通用循環(huán)遍歷方法
- Javascript數(shù)組循環(huán)遍歷之forEach詳解
- javascript forEach函數(shù)實現(xiàn)代碼
- 關于JavaScript中forEach和each用法淺析
- jQuery each和js forEach用法比較
- jsp簡單自定義標簽的forEach遍歷及轉義字符示例
- JavaScript實現(xiàn)多叉樹的遞歸遍歷和非遞歸遍歷算法操作示例
- JavaScript實現(xiàn)樹的遍歷算法示例【廣度優(yōu)先與深度優(yōu)先】
- JS實現(xiàn)手寫 forEach算法示例
相關文章
BootstrapTable與KnockoutJS相結合實現(xiàn)增刪改查功能【一】
KnockoutJS是一個JavaScript實現(xiàn)的MVVM框架。通過本文給大家介紹BootstrapTable與KnockoutJS相結合實現(xiàn)增刪改查功能【一】,感興趣的朋友一起學習吧2016-05-05JavaScript高級程序設計 閱讀筆記(四) ECMAScript中的類型轉換
ECMAScript中的類型轉換,學習js的朋友可以看看2012-02-02JS限制Textarea文本域字符個數(shù)的具體實現(xiàn)
這篇文章介紹了JS限制Textarea文本域字符個數(shù)的具體實現(xiàn),有需要的朋友可以參考一下2013-08-08JavaScript實現(xiàn)樓梯滾動特效(jQuery實現(xiàn))
這篇文章主要為大家詳細介紹了JavaScript實現(xiàn)樓梯滾動特效,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-09-09javascript實現(xiàn)獲取瀏覽器版本、瀏覽器類型
這篇文章主要介紹了javascript實現(xiàn)獲取瀏覽器版本,javascript實現(xiàn)獲取瀏覽器類型兩大方面,對這方面感興趣的朋友可以參考一下2015-12-12jquery實現(xiàn)select下拉框美化特效代碼分享
這篇文章主要介紹了jquery實現(xiàn)select下拉框美化特效,實現(xiàn)效果簡潔大方,推薦給大家,有需要的小伙伴可以參考下。2015-08-08