最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

JavaScript递归遍历和非递归遍历

来源:动视网 责编:小采 时间:2020-11-27 19:40:07
文档

JavaScript递归遍历和非递归遍历

JavaScript递归遍历和非递归遍历:这篇文章主要介绍了JavaScript实现多叉树的递归遍历和非递归遍历算法,结合实例形式详细分析了JavaScript多叉树针对json节点的递归与非递归遍历相关操作技巧,需要的朋友可以参考下本文实例讲述了JavaScript实现多叉树的递归遍历和非递归遍历算法操作。分享给大
推荐度:
导读JavaScript递归遍历和非递归遍历:这篇文章主要介绍了JavaScript实现多叉树的递归遍历和非递归遍历算法,结合实例形式详细分析了JavaScript多叉树针对json节点的递归与非递归遍历相关操作技巧,需要的朋友可以参考下本文实例讲述了JavaScript实现多叉树的递归遍历和非递归遍历算法操作。分享给大
 这篇文章主要介绍了JavaScript实现多叉树的递归遍历和非递归遍历算法,结合实例形式详细分析了JavaScript多叉树针对json节点的递归与非递归遍历相关操作技巧,需要的朋友可以参考下

本文实例讲述了JavaScript实现多叉树的递归遍历和非递归遍历算法操作。分享给大家供大家参考,具体如下:

演示之前的准备工作

演示项目的文件结构:

index.html
jsonData.js
recurrenceTree.js
noRecurrenceTree.js

解释一下各个文件:

index.html 是用来演示的 HTML 文件。
jsonData.js 里面存储着多叉树的JSON数据。
recurrenceTree.js 递归算法遍历树。
noRecurrenceTree.js 非递归算法遍历树。

jsonData.js

/**
 * 用于演示的 JSON 树形数据结构
 */
var root = {
 name:'D盘',
 children:[
 {
 name:'学习',
 children:[
 {
 name:'电子书',
 children:[
 {
 name:'文学',
 children:[
 {
 name:'茶馆'
 },
 {
 name:'红与黑'
 }
 ]
 }
 ]
 }
 ]
 },
 {
 name:'电影',
 children:[
 {
 name:'美国电影'
 },
 {
 name:'日本电影'
 }
 ]
 }
 ]
}

index.html

<!DOCTYPE html>
<html lang="en">
 <head>
 <meta charset="UTF-8">
 <meta name="renderer" content="webkit"/>
 <meta http-equiv="x-ua-compatible" content="ie=edge, chrome=1">
 <meta http-equiv="Cache-Control" content="max-age: 31536000">
 <title>www.gxlcms.com js多叉树遍历</title>
 <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
 <meta name="wap-font-scale" content="no">
 <meta name="author" content="">
 <meta name="keywords" content="">
 <meta name="description" content="">
 <script type="text/javascript" src="jsonData.js"></script>
 </head>
 <body>
 递归遍历:<span id="app"></span>
 <script type="text/javascript" src="recurrenceTree.js"></script>
 <hr>
 非递归遍历:<span id="app2"></span>
 <script type="text/javascript" src="noRecurrenceTree.js"></script>
 </body>
</html>

递归遍历

recurrenceTree.js

// 遍历单个节点
function traverseNode(node){
 var pObj = document.getElementById("app");
 pObj.innerHTML = pObj.innerHTML + " " + node.name;
}
// 递归遍历树
// 作者:张超
function traverseTree(node){
 if (!node) {
 return;
 }
 traverseNode(node);
 if (node.children && node.children.length > 0) {
 var i = 0;
 for (i = 0; i < node.children.length; i++) {
 this.traverseTree(node.children[i]);
 }
 }
}
traverseTree(root);

非递归遍历

noRecurrenceTree.js

// 遍历单个节点
function traverseNode2(node){
 var pObj2 = document.getElementById("app2");
 pObj2.innerHTML = pObj2.innerHTML + " " + node.name;
}
// 非递归遍历树
// 作者:张超
function traverseTree2(node){
 if (!node) {
 return;
 }
 var stack = [];
 stack.push(node);
 var tmpNode;
 while (stack.length > 0) {
 tmpNode = stack.pop();
 traverseNode2(tmpNode);
 if (tmpNode.children && tmpNode.children.length > 0) {
 var i = tmpNode.children.length - 1;
 for (i = tmpNode.children.length - 1; i >= 0; i--) {
 stack.push(tmpNode.children[i]);
 }
 }
 }
}
traverseTree2(root);

本机测试效果:

上面是我整理给大家的,希望今后会对大家有帮助。

相关文章:

在VUE + UEditor中如何实现单图片跨域上传功能

在vue中使用better-scroll滚动插件

ES6 迭代器和 for.of循环(详细教程)

文档

JavaScript递归遍历和非递归遍历

JavaScript递归遍历和非递归遍历:这篇文章主要介绍了JavaScript实现多叉树的递归遍历和非递归遍历算法,结合实例形式详细分析了JavaScript多叉树针对json节点的递归与非递归遍历相关操作技巧,需要的朋友可以参考下本文实例讲述了JavaScript实现多叉树的递归遍历和非递归遍历算法操作。分享给大
推荐度:
标签: js javascript 递归
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top