JavaScript树的深度优先遍历和广度优先遍历算法示例
本文实例讲述了JavaScript树的深度优先遍历和广度优先遍历算法。分享给大家供大家参考,具体如下:
1、深度优先遍历的递归写法
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、深度优先遍历的非递归写法
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、广度优先遍历的递归写法:
报错: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、广度优先遍历的非递归写法
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相关内容感兴趣的读者可查看本站专题:《JavaScript数据结构与算法技巧总结》、《JavaScript数学运算用法总结》、《JavaScript排序算法总结》、《JavaScript遍历算法与技巧总结》、《JavaScript查找算法技巧总结》及《JavaScript错误与调试技巧总结》
希望本文所述对大家JavaScript程序设计有所帮助。
- 详解JavaScript中的forEach()方法的使用
- js中的for如何实现foreach中的遍历
- JavaScript forEach()遍历函数使用及介绍
- javascript forEach通用循环遍历方法
- Javascript数组循环遍历之forEach详解
- javascript forEach函数实现代码
- 关于JavaScript中forEach和each用法浅析
- jQuery each和js forEach用法比较
- jsp简单自定义标签的forEach遍历及转义字符示例
- JavaScript实现多叉树的递归遍历和非递归遍历算法操作示例
- JavaScript实现树的遍历算法示例【广度优先与深度优先】
- JS实现手写 forEach算法示例
相关文章
JS中使用sort结合localeCompare实现中文排序实例
这篇文章主要介绍了JS中使用sort结合localeCompare实现中文排序实例,重点介绍localeCompare函数,需要的朋友可以参考下2014-07-07《JavaScript DOM 编程艺术》读书笔记之JavaScript 简史
这篇文章主要介绍了《JavaScript DOM 编程艺术》读书笔记之JavaScript 简史,需要的朋友可以参考下2015-01-01
最新评论