1. 程式人生 > 實用技巧 >JS中的DFS和BFS

JS中的DFS和BFS

示例物件:
{name: 'a', next: [{name: 'b', next: [{name: 'd', next: []}, {name: 'e', next: []}]}, {name: 'c', next: [{name: 'f', next: []}, {name: 'g', next: []}]}]}
廣度優先遍歷:
function BFS(obj){
    let list = [obj],
        listTemp = [];
    while(list.length != 0){
      for(let i = 0, len = list.length; i < len; ++i){
        console.log(list[i].name);
        listTemp 
= [...listTemp, ...list[i].next]; } list = listTemp; listTemp = []; } }
深度優先遍歷:
function DFS(obj){
    let p = obj,
        p_p = [],
        n = -1;
    while(p != null){
      if(p.is != true){
        console.log(p.name);
        p.is = true;
      }
      let pTemp = null
; for(let i = 0, len = p.next.length; i < len; ++i){ if(p.next[i].is != true){ p_p[n + 1] = p; pTemp = p.next[i]; ++n; break; } } p = pTemp; if(p == null){ p = p_p[n]; --n; } } }