Maison >interface Web >js tutoriel >Exemples d'implémentation JavaScript d'algorithmes de parcours récursif et de parcours non récursif pour plusieurs arbres

Exemples d'implémentation JavaScript d'algorithmes de parcours récursif et de parcours non récursif pour plusieurs arbres

韦小宝
韦小宝original
2018-02-10 10:29:561850parcourir

Cet article présente principalement JavaScript pour implémenter les algorithmes de parcours récursif et non récursif des multi-arbres. Il analyse également en détail les opérations liées au parcours récursif et non récursif des multi-arbres JavaScript pour. json sous forme d'exemples. Conseils, les amis intéressés par JavaScript peuvent se référer à

Cet article décrit l'exemple de JavaScript implémentant des opérations d'algorithme de parcours récursif et non récursif de multi-arbres. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

Préparation avant présentation

Projet de démonstration La structure du fichier :

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

Expliquez chaque fichier :

index.html est un fichier HTML utilisé à des fins de démonstration.
jsonData.js stocke les données JSON du multi-arbre.
L'algorithme récursif recurrenceTree.js parcourt l'arbre.
Algorithme non récursif noRecurrenceTree.js pour la traversée d'arbres.

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>

Parcours récursif

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

Parcours non récursif

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

C'est tout pour ça article Tout le contenu, j'espère qu'il pourra être utile à tous ceux qui apprennent JavaScript ! !

Recommandations associées :

Implémentation JS du partage de code de fonction du système de loterie

Cet article est principalement pour tout le monde Une introduction détaillée aux fonctions du système de loterie js sur un sujet sur le système de loterie, avec un certain prix de référence....

Exemples détaillés d'accès ajax en js

Le contenu principal de cet article Permettez-moi de vous présenter les informations pertinentes sur l'explication détaillée des exemples d'accès ajax en js natif. J'espère qu'à travers cet article vous pourrez maîtriser la théorie....

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn