最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript實現(xiàn)多叉樹的遞歸遍歷和非遞歸遍歷算法操作示例

 更新時間:2018年02月08日 10:30:57   作者:zhangchao19890805  
這篇文章主要介紹了JavaScript實現(xiàn)多叉樹的遞歸遍歷和非遞歸遍歷算法,結(jié)合實例形式詳細分析了JavaScript多叉樹針對json節(jié)點的遞歸與非遞歸遍歷相關操作技巧,需要的朋友可以參考下

本文實例講述了JavaScript實現(xiàn)多叉樹的遞歸遍歷和非遞歸遍歷算法操作。分享給大家供大家參考,具體如下:

演示之前的準備工作

演示項目的文件結(jié)構(gòu):

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

解釋一下各個文件:

index.html 是用來演示的 HTML 文件。
jsonData.js 里面存儲著多叉樹的JSON數(shù)據(jù)。
recurrenceTree.js 遞歸算法遍歷樹。
noRecurrenceTree.js 非遞歸算法遍歷樹。

jsonData.js

/**
 * 用于演示的 JSON 樹形數(shù)據(jù)結(jié)構(gòu)
 */
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.fzitv.net 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

// 遍歷單個節(jié)點
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

// 遍歷單個節(jié)點
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相關內(nèi)容感興趣的讀者可查看本站專題:《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript數(shù)學運算用法總結(jié)》、《JavaScript排序算法總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》、《JavaScript查找算法技巧總結(jié)》及《JavaScript錯誤與調(diào)試技巧總結(jié)

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

相關文章

  • js實現(xiàn)中國象棋游戲

    js實現(xiàn)中國象棋游戲

    這篇文章主要為大家詳細介紹了js實現(xiàn)中國象棋游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • 微信小程序?qū)崿F(xiàn)電子簽名

    微信小程序?qū)崿F(xiàn)電子簽名

    這篇文章主要為大家詳細介紹了微信小程序?qū)崿F(xiàn)電子簽名,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • JS實現(xiàn)圖片的不間斷連續(xù)滾動的簡單實例

    JS實現(xiàn)圖片的不間斷連續(xù)滾動的簡單實例

    下面小編就為大家?guī)硪黄狫S實現(xiàn)圖片的不間斷連續(xù)滾動的簡單實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-06-06
  • JavaScript惰性求值的一種實現(xiàn)方法示例

    JavaScript惰性求值的一種實現(xiàn)方法示例

    這篇文章主要給大家介紹了關于JavaScript惰性求值的一種實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-01-01
  • 詳解JavaScript 作用域

    詳解JavaScript 作用域

    這篇文章主要介紹了JavaScript 作用域的相關資料,文中講解非常詳細,幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-07-07
  • js列舉css中所有圖標的實現(xiàn)代碼

    js列舉css中所有圖標的實現(xiàn)代碼

    最近在做一個通用的配置模塊。配置模塊中必然要對系統(tǒng)的菜單、功能模塊、權(quán)限資源等進行配置,為了更好的用戶體驗,圖標是必不可少的!
    2011-07-07
  • 微信小程序Echarts圖表組件使用方法詳解

    微信小程序Echarts圖表組件使用方法詳解

    這篇文章主要介紹了微信小程序Echarts圖表組件使用方法詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,
    2019-06-06
  • 純js網(wǎng)頁畫板(Graphics)類簡介及實現(xiàn)代碼

    純js網(wǎng)頁畫板(Graphics)類簡介及實現(xiàn)代碼

    今天需要在網(wǎng)頁上畫一個圖譜,想到用JS,經(jīng)過學習,和網(wǎng)上搜索,經(jīng)過整理優(yōu)化得到下面代碼,注意不是用HTML5的canvas,而是用的純js,需要了解的朋友可以參考下
    2012-12-12
  • javascript 支持ie和firefox杰奇翻頁函數(shù)

    javascript 支持ie和firefox杰奇翻頁函數(shù)

    杰奇小說系統(tǒng)用到的翻頁函數(shù),支持firefox,官方自帶的模板不支持,這樣大家就可以用firefox瀏覽網(wǎng)頁了,在網(wǎng)頁木馬橫行的今天,firefox比ie要安全不少
    2008-07-07
  • 比較詳細的javascript DOM 學習筆記

    比較詳細的javascript DOM 學習筆記

    看了很多的js dom學習資料,發(fā)現(xiàn)這個比較詳細,特轉(zhuǎn)載給大家學習一下
    2008-06-06

最新評論

丹寨县| 铜川市| 水富县| 镇坪县| 浠水县| 辉南县| 乐平市| 湾仔区| 洪雅县| 靖州| 博爱县| 海兴县| 衡南县| 滦平县| 尚义县| 鄂托克旗| 杭锦后旗| 临清市| 南木林县| 武清区| 靖州| 皮山县| 阿尔山市| 兰坪| 平乐县| 呼和浩特市| 民县| 柏乡县| 韶山市| 曲阳县| 社旗县| 故城县| 黎平县| 鄯善县| 蕲春县| 什邡市| 阜新| 寿阳县| 滕州市| 常宁市| 固原市|