广度优先遍历和深度优先遍历

深度优先遍历

// 递归
function deepTraversal(node, list = []){
    if(!node) return list;
    list.push(node);
    const children = node.children || [];
    children.map(item => deepTraversal(item, list));
    return list
}
// 非递归
function deepTraversal(node){
  if(!node) return []
  const stack = [node]
  const result = []
  while(!!stack.length){
     const item = stack.pop();
     result.push(item)
     const children = item.children || [];
     for(let i = children.length - 1; i >= 0; i--){
          stack.push(children[i])
     }
  }
return result
}

广度优先遍历

// 非递归
function widthTraversal(node){
  if(!node) return []
  const stack = [node]
  const result = []
  while(!!stack.length){
     const item = stack.shift();
     result.push(item)
     const children = item.children || [];
     for(let i = 0; i <children.length; i++){
          stack.push(children[i])
     }
  }
return result
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容