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

JavaScript樹的深度優(yōu)先遍歷和廣度優(yōu)先遍歷算法示例

 更新時間:2018年07月30日 11:27:07   作者:筱葭  
這篇文章主要介紹了JavaScript樹的深度優(yōu)先遍歷和廣度優(yōu)先遍歷算法,結(jié)合實例形式分析了JavaScript樹的深度優(yōu)先遍歷、廣度優(yōu)先遍歷遞歸與非遞歸相關(guān)實現(xiàn)技巧,需要的朋友可以參考下

本文實例講述了JavaScript樹的深度優(yōu)先遍歷和廣度優(yōu)先遍歷算法。分享給大家供大家參考,具體如下:

1、深度優(yōu)先遍歷的遞歸寫法

function deepTraversal(node) {
  var nodes = [];
  if (node != null) {
      nodes.push(node);
      var children = node.children;
      for (var i = 0; i < children.length; i++)
          deepTraversal(children[i]);
  }
  return nodes;
}

2、深度優(yōu)先遍歷的非遞歸寫法

function deepTraversal(node) {
  var nodes = [];
  if (node != null) {
    var stack = [];
    stack.push(node);
    while (stack.length != 0) {
      var item = stack.pop();
      nodes.push(item);
      var children = item.children;
      for (var i = children.length - 1; i >= 0; i--)
        stack.push(children[i]);
    }
  }
  return nodes;
}

3、廣度優(yōu)先遍歷的遞歸寫法:

報錯:Maximum call stack size exceeded(…)

function wideTraversal(node) {
  var nodes = [];
  var i = 0;
  if (!(node == null)) {
    nodes.push(node);
    wideTraversal(node.nextElementSibling);
    node = nodes[i++];
    wideTraversal(node.firstElementChild);
  }
  return nodes;
}

4、廣度優(yōu)先遍歷的非遞歸寫法

function wideTraversal(selectNode) {
  var nodes = [];
  if (selectNode != null) {
    var queue = [];
    queue.unshift(selectNode);
    while (queue.length != 0) {
      var item = queue.shift();
      nodes.push(item);
      var children = item.children;
      for (var i = 0; i < children.length; i++)
        queue.push(children[i]);
    }
  }
  return nodes;
}

更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript數(shù)學運算用法總結(jié)》、《JavaScript排序算法總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》、《JavaScript查找算法技巧總結(jié)》及《JavaScript錯誤與調(diào)試技巧總結(jié)

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

相關(guān)文章

  • js 幻燈片的實現(xiàn)

    js 幻燈片的實現(xiàn)

    今天在群里看到有人要幻燈片的代碼,于是我自己也想了想,做個總結(jié)。常見的幻燈片切換無非就是輪播和漸變,不管哪種都是用定時器來逐步改變圖片或者圖片組的某種屬性來實現(xiàn)的
    2011-12-12
  • JavaSctit 利用FileReader和濾鏡上傳圖片預覽功能

    JavaSctit 利用FileReader和濾鏡上傳圖片預覽功能

    FileReader 對象允許Web應用程序異步讀取存儲在用戶計算機上的文件內(nèi)容,使用 File或 Blob對象指定要讀取的文件或數(shù)據(jù)。下面通過本文給大家分享JavaSctit 利用FileReader和濾鏡上傳圖片預覽功能,需要的朋友參考下吧
    2017-09-09
  • JavaScript時間對象之常用方法的設(shè)置實例

    JavaScript時間對象之常用方法的設(shè)置實例

    這篇文章主要為大家介紹了JavaScript時間對象常用方法的設(shè)置實例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • 簡單實現(xiàn)js浮動框

    簡單實現(xiàn)js浮動框

    這篇文章主要為大家詳細介紹了如何簡單實現(xiàn)js浮動框,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • js實現(xiàn)表單項的全選、反選及刪除操作示例

    js實現(xiàn)表單項的全選、反選及刪除操作示例

    這篇文章主要介紹了js實現(xiàn)表單項的全選、反選及刪除操作,結(jié)合實例形式分析了基于dedecms后臺使用js實現(xiàn)表單項的全選、反選及刪除相關(guān)操作技巧,需要的朋友可以參考下
    2020-06-06
  • echarts中圖例右置且豎排完整代碼

    echarts中圖例右置且豎排完整代碼

    這篇文章主要給大家介紹了關(guān)于echarts中圖例右置且豎排的相關(guān)資料,Echarts可以幫助我們快速構(gòu)建柱狀圖、餅圖、條形圖,這對于多圖形化展示數(shù)據(jù)來說尤其方便,可幫助我們快速開發(fā),需要的朋友可以參考下
    2023-08-08
  • js實現(xiàn)每日簽到功能

    js實現(xiàn)每日簽到功能

    這篇文章主要為大家詳細介紹了js實現(xiàn)每日簽到功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • JavaScript中的全局對象介紹

    JavaScript中的全局對象介紹

    這篇文章主要介紹了JavaScript中的全局對象介紹,對于任何JavaScript程序,當程序開始運行時,JavaScript解釋器都會初始化一個全局對象以供程序使用,需要的朋友可以參考下
    2015-01-01
  • JS轉(zhuǎn)換金額大寫方法詳細例子

    JS轉(zhuǎn)換金額大寫方法詳細例子

    在處理財務(wù)賬款類需求時需要將轉(zhuǎn)賬金額寫成大寫的,下面這篇文章主要給大家介紹了關(guān)于JS轉(zhuǎn)換金額大寫方法的相關(guān)資料,文中給出了詳細的代碼示例,需要的朋友可以參考下
    2023-10-10
  • 微信小程序返回上一級頁面的實現(xiàn)代碼

    微信小程序返回上一級頁面的實現(xiàn)代碼

    這篇文章主要介紹了微信小程序返回上一級頁面的實現(xiàn)代碼,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06

最新評論

宜川县| 南漳县| 乐东| 宣恩县| 佛山市| 平塘县| 轮台县| 南城县| 肇庆市| 抚州市| 井陉县| 南陵县| 麻城市| 盖州市| 泰兴市| 浙江省| 韩城市| 蚌埠市| 观塘区| 吉木乃县| 土默特左旗| 凉城县| 宜春市| 延边| 兴隆县| 黔西| 温宿县| 合水县| 绿春县| 娄底市| 托克逊县| 宜宾市| 奉新县| 新丰县| 工布江达县| 仁化县| 佛学| 西宁市| 苍山县| 磴口县| 玉溪市|