>  기사  >  웹 프론트엔드  >  JavaScript는 다중 트리의 재귀 순회 및 비재귀 순회 알고리즘 작업 예제를 구현합니다.

JavaScript는 다중 트리의 재귀 순회 및 비재귀 순회 알고리즘 작업 예제를 구현합니다.

韦小宝
韦小宝원래의
2018-02-10 10:29:561829검색

이 글에서는 다중 트리의 재귀적 순회 및 비재귀적 순회 알고리즘을 구현하기 위한 JavaScript를 주로 소개하고, json 노드에 대한 JavaScript 다중 트리의 재귀적 및 비재귀적 순회 기법도 예제 형식으로 자세히 분석합니다. . JavaScript에 관심이 있으신가요? 친구들은 이 기사를 참조할 수 있습니다.

이 기사에서는 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.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>

재귀 순회

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

비순회

noRe curenceT ree.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);

이 글은 여기까지입니다 내용은 여기에 있습니다. 모든 사람이 JavaScript를 배우는 데 도움이 되기를 바랍니다! !

관련 추천:

js 복권 시스템 기능 코드 공유 구현

이 글은 주로 복권 시스템에 대한 주제인 js 복권 시스템 기능을 특정 참고 가격과 함께 자세히 소개합니다...

js에서의 ajax 접근에 대한 상세한 예시

이 글은 주로 네이티브 js에서의 ajax 접근에 대한 상세한 예시에 대한 정보를 소개하는 글입니다. 이 글을 통해 이론을 마스터하시길 바랍니다....

위 내용은 JavaScript는 다중 트리의 재귀 순회 및 비재귀 순회 알고리즘 작업 예제를 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.