国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > JS > 正文

JavaScript實現多叉樹的遞歸遍歷和非遞歸遍歷算法操作示例

2024-05-06 16:42:23
字體:
來源:轉載
供稿:網友

本文實例講述了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>m.survivalescaperooms.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 divObj = document.getElementById("app");  divObj.innerHTML = divObj.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 divObj2 = document.getElementById("app2");  divObj2.innerHTML = divObj2.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);

本機測試效果:

JavaScript,多叉樹,遞歸遍歷,非遞歸遍歷,算法

 

希望本文所述對大家JavaScript程序設計有所幫助。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 桂东县| 西畴县| 耒阳市| 孝义市| 榆中县| 五指山市| 大同市| 太康县| 兴隆县| 会泽县| 巧家县| 贺兰县| 泾川县| 阿鲁科尔沁旗| 阿巴嘎旗| 和顺县| 阿图什市| 成安县| 肃南| 惠安县| 乌苏市| 合江县| 永吉县| 柳河县| 太仆寺旗| 泽库县| 宁强县| 马关县| 福建省| 根河市| 元朗区| 景洪市| 无极县| 桑植县| 阿巴嘎旗| 建昌县| 临武县| 堆龙德庆县| 大城县| 安庆市| 沛县|