浅谈JavaScript中树的深度优先遍历和广度优先遍历
来源:互联网 发布:网络主播崔佑欣揪痧 编辑:程序博客网 时间:2024/06/05 16:20
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;}
2 0
- 浅谈JavaScript中树的深度优先遍历和广度优先遍历
- 二叉树的深度优先遍历和广度优先遍历
- 普通树的深度优先遍历和广度优先遍历
- 二叉树的深度优先遍历和广度优先遍历
- 树的深度优先遍历和广度优先遍历
- 二叉树的深度优先遍历和广度优先遍历
- 二叉树的深度优先遍历和广度优先遍历
- 二叉树的深度优先遍历和广度优先遍历
- 二叉树的深度优先遍历和广度优先遍历
- 二叉树的广度优先遍历和深度优先遍历
- 二叉树的深度优先遍历和广度优先遍历
- 二叉树的深度优先遍历和广度优先遍历
- 二叉树的深度优先遍历和广度优先遍历
- 二叉树的深度优先遍历和广度优先遍历
- 二叉树的深度优先遍历和广度优先遍历
- 二叉树的深度优先遍历和广度优先遍历
- 二叉树的深度优先遍历和广度优先遍历
- 二叉树的深度优先遍历和广度优先遍历
- 链接、装载与库——计算机组成
- Android Studio 导入 Android 源码
- MongoDB的安装与增删改查语句
- linux常用指令
- java中的return返回值用法
- 浅谈JavaScript中树的深度优先遍历和广度优先遍历
- 自定义view4
- rsync同步时在目的服务器上创建IP
- 依赖注入—Spring核心机制
- java 网络通信 socket
- 区间K好数 总结
- C语言制作“三天打鱼;两天晒网”
- react 中的this
- getParameter方法中文显示问号解决方法