深度优先和广度优先的概念理解
生活随笔
收集整理的這篇文章主要介紹了
深度优先和广度优先的概念理解
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
概念
深度優先:找到一個節點后,把它的后輩都找出來,最常用遞歸法。
廣度優先:找到一個節點后,把他同級的兄弟節點都找出來放在前邊,把孩子放到后邊,最常用 while。
舉例數據
var nodes = [{name: "爺爺",children: [{name: '爸爸',children: [{name: '我',children: [{name: '我孩子',children: []}]}]},{name: '叔叔',children: [{name: '唐哥',children: [{name: '唐哥兒子',children: []},{name: '唐哥女兒',children: []}]}]}]},{name: "唐爺爺",children: [{name: '唐叔',children: [{name: '唐叔孩子',children: [{name: '唐叔孫子',children: []}]},]}]}]深度優先
找到一個人的時候,先找他的孩子再找同輩的人。
function getNames(nodes) {var names = []for (var i = 0; i < nodes.length; i++) {names.push(nodes[i].name)if (nodes[i].children.length > 0) {names = names.concat(getNames(nodes[i].children))}}return names}// ["爺爺", "爸爸", "我", "我孩子", "叔叔", "唐哥", "唐哥兒子", "唐哥女兒", "唐爺爺", "唐叔", "唐叔孩子", "唐叔孫子"]廣度優先
找到一個人的時候,先找兄弟姐妹再找孩子
function getNames(nodes, names=[]) {var children = [].concat(nodes)while(children.length > 0) {var child = children.shift()names.push(child.name)if (child.children.length > 0) {children = children.concat(child.children)}console.log(children)}return names}// ["爺爺", "唐爺爺", "爸爸", "叔叔", "唐叔", "我", "唐哥", "唐叔孩子", "我孩子", "唐哥兒子", "唐哥女兒", "唐叔孫子"]總結
以上是生活随笔為你收集整理的深度优先和广度优先的概念理解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 树-广度优先和深度优先搜索算法
- 下一篇: Achieve Your Full Po