首页 > 编程 > JavaScript > 正文

JavaScript树的深度优先遍历和广度优先遍历算法示例

2019-11-19 13:23:12
字体:
来源:转载
供稿:网友

本文实例讲述了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程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表