千家信息网

JavaScript中深度优先遍历和广度优先遍历算法怎么用

发表于:2025-01-24 作者:千家信息网编辑
千家信息网最后更新 2025年01月24日,这篇文章主要介绍"JavaScript中深度优先遍历和广度优先遍历算法怎么用",在日常操作中,相信很多人在JavaScript中深度优先遍历和广度优先遍历算法怎么用问题上存在疑惑,小编查阅了各式资料,
千家信息网最后更新 2025年01月24日JavaScript中深度优先遍历和广度优先遍历算法怎么用

这篇文章主要介绍"JavaScript中深度优先遍历和广度优先遍历算法怎么用",在日常操作中,相信很多人在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中深度优先遍历和广度优先遍历算法怎么用"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

0