Heim  >  Artikel  >  Web-Frontend  >  Beispiele für die JavaScript-Implementierung rekursiver Traversal- und nichtrekursiver Traversal-Algorithmen für mehrere Bäume

Beispiele für die JavaScript-Implementierung rekursiver Traversal- und nichtrekursiver Traversal-Algorithmen für mehrere Bäume

韦小宝
韦小宝Original
2018-02-10 10:29:561826Durchsuche

In diesem Artikel wird hauptsächlich JavaScript zur Implementierung der rekursiven und nichtrekursiven Traversalalgorithmen von Multitrees vorgestellt. Außerdem werden die rekursiven und nichtrekursiven Traversaloperationen von JavaScript-Multitrees im Detail analysiert JSON-Knoten in Form von Beispielen. Freunde, die sich für JavaScript interessieren, können sich auf

beziehen. Dieser Artikel beschreibt das Beispiel für die Implementierung rekursiver Traversal- und nichtrekursiver Traversalalgorithmusoperationen von Multi-Bäumen. Teilen Sie es allen als Referenz mit. Die Einzelheiten lauten wie folgt:

Vorbereitung vor der Präsentation

Demoprojekt Die Dateistruktur:

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

Erklären Sie jede Datei:

index.html ist eine HTML-Datei, die zur Demonstration verwendet wird.
jsonData.js speichert die JSON-Daten von Multi-Tree.
recurrenceTree.js rekursiver Algorithmus durchläuft den Baum.
noRecurrenceTree.js nicht rekursiver Algorithmus für die Baumdurchquerung.

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.php.cn 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>

Rekursive Durchquerung

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);

Nicht-rekursive Durchquerung

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);

Das war's Der gesamte Inhalt des Artikels ist hoffentlich für alle hilfreich, die JavaScript lernen! !

Verwandte Empfehlungen:

JS-Implementierung der Codefreigabe von Lotteriesystemfunktionen

Dieser Artikel ist hauptsächlich für alle Eine ausführliche Einführung in die Funktionen des js-Lotteriesystems, ein Thema zum Lotteriesystem, hat einen bestimmten Referenzpreis....

Detaillierte Beispiele für den Ajax-Zugriff in js

Der Hauptinhalt dieses Artikels Lassen Sie mich Ihnen die relevanten Informationen zur detaillierten Erklärung von Ajax-Zugriffsbeispielen in nativem JS vorstellen. Ich hoffe, dass Sie mit diesem Artikel die Theorie beherrschen können....

Das obige ist der detaillierte Inhalt vonBeispiele für die JavaScript-Implementierung rekursiver Traversal- und nichtrekursiver Traversal-Algorithmen für mehrere Bäume. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn