日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

深度优先和广度优先的概念理解

發布時間:2023/12/31 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深度优先和广度优先的概念理解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

概念

深度優先:找到一個節點后,把它的后輩都找出來,最常用遞歸法。

廣度優先:找到一個節點后,把他同級的兄弟節點都找出來放在前邊,把孩子放到后邊,最常用 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}// ["爺爺", "唐爺爺", "爸爸", "叔叔", "唐叔", "我", "唐哥", "唐叔孩子", "我孩子", "唐哥兒子", "唐哥女兒", "唐叔孫子"]

總結

以上是生活随笔為你收集整理的深度优先和广度优先的概念理解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。