【前端】自学基础算法 -- 19.树的广度优先搜索

news/2025/1/15 1:40:51 标签: 算法, 前端, 宽度优先

树的广度优先搜索

简介

树的广度优先搜索,先从根节点开始,逐层遍历所有节点,直到遍历完整棵树。

实现方法

也是数组操作,较简单

class Node {
  constructor(value) {
    this.value = value
    this.childs = []
  }
}

let a = new Node('a')
let b = new Node('b')
let c = new Node('c')
let d = new Node('d')
let e = new Node('e')
let f = new Node('f')

a.childs.push(c)
a.childs.push(b)
c.childs.push(f)
b.childs.push(d)
b.childs.push(e)

function bfs(roots, target) {
  if (roots == null || roots.length === 0) return false
  for (let i = 0; i < roots.length; i++) {
    if (roots[i].value === target) return true
    if (bfs(roots[i].childs, target)) return true
    return false
  }
}

console.log(bfs([a], 'ff'))



http://www.niftyadmin.cn/n/5823336.html

相关文章

3D目标检测数据集——Waymo数据集

Waymo数据集簡介 发布首页&#xff1a;https://waymo.com/open/ 论文&#xff1a;https://openaccess.thecvf.com/content_CVPR_2020/papers/Sun_Scalability_in_Perception_for_Autonomous_Driving_Waymo_Open_Dataset_CVPR_2020_paper.pdf github&#xff1a;https://github.…

MATLAB学习笔记目录

MATLAB学习笔记-生成纯音并保存-CSDN博客 MATLAB学习笔记-各种格式之间的转换 - 知乎 MATLAB学习笔记-胞组&#xff08;cell array&#xff09;转换为矩阵&#xff0c;cell2mat_matlab如何把元胞数组改为矩阵-CSDN博客MATLAB学习笔记-判断数组、结构体、数值、字符串是否相同…

大疆机场及无人机上云

最近基于大疆上云api进行二次开发&#xff0c;后面将按照开发步骤对其进行说明&#xff01;

Spring Boot中的配置文件有哪些类型

在 Spring Boot 中&#xff0c;配置文件用于管理应用程序的设置和参数&#xff0c;通常存放在项目的 src/main/resources 目录下。Spring Boot 支持多种类型的配置文件&#xff0c;并通过这些文件来控制应用的行为和环境配置。 1. application.properties application.proper…

Kubernetes1.28 编译 kubeadm修改证书有效期到 100年.并更新k8s集群证书

文章目录 前言一、资源准备1. 下载对应源码2.安装编译工具3.安装并设置golang 二、修改证书有效期1.修改证书有效期2.修改 CA 证书有效期 三、编译kubeadm四、使用新kubeadm方式1.当部署新集群时,使用该kubeadm进行初始化2.替换现有集群kubeadm操作 前言 kubeadm 默认证书为一…

面试加分项:Android Framework AMS 全面概述和知识要点

第一章:AMS 的架构与组件 1.1 AMS 整体架构 在 Android 系统的庞大体系中,AMS(Activity Manager Service)就如同一个中枢神经系统,是整个系统的核心服务之一,对应用的性能和用户体验有着直接且关键的影响 。它的整体架构由 Client 端和 Service 端两大部分组成,这两端相…

《零基础Go语言算法实战》【题目 2-8】defer 和 return 语句

《零基础Go语言算法实战》 【题目 2-8】defer 和 return 语句 下面代码的输出是什么&#xff1f;请说明原因。 package main import "fmt" func main() { fmt.Println("result:", def()) } func def() int { var i int defer func() { i fmt.Printl…

探秘 JMeter (Interleave Controller)交错控制器:解锁性能测试的隐藏密码

嘿&#xff0c;小伙伴们&#xff01;今天咱们要把 JMeter 里超厉害的 Interleave Controller&#xff08;交错控制器&#xff09;研究个透&#xff0c;让你从新手直接进阶成高手&#xff0c;轻松拿捏各种性能测试难题&#xff01; 一、Interleave Controller 深度剖析 所属家族…