当前位置: 首页 > news >正文

树的深度优先遍历与广度优先遍历

	//数组每个元素描述的父子节点,节点中node值代表当前节点值,children为子节点node值,node值不重复,请实现对下面key值的层次遍历输出
	let tree = [{
			node: 2,
			children: [3, 9, 4]
		},
		{
			node: 7,
			children: [2]
		},
		{
			node: 3,
			children: [6]
		},
		{
			node: 4,
			children: [5]
		},
		{
			node: 5,
			children: [8]
		},
		{
			node: 10,
			children: [11]
		},
	]
	const visited = new Set();
	let sum = ''
	let arr = []

	function bfs(index) {
		tree.map((item, idex) => {
			if (item.node == index) {
				visited.add(item.node)
				arr.push(item.node)
				sum = idex
			}
		})
		if (tree[sum]) {
			tree[sum].children.forEach((c) => {
				if (!visited.has(c)) {
					visited.add(c);
					arr.push(c)
					bfs(c)
				}
			});
		}
	};

	var ret = function(arr) {
		var res = [arr[0]];
		for (var j = 1; j < arr.length; j++) {
			var repeat = false;
			for (var i = 0; i < res.length; i++) {
				if (arr[j] == res[i]) {
					repeat = true;
					break;
				}
			}
			if (!repeat) {
				res.push(arr[j]);
			}
		}
		return res;
	}
	console.log(bfs(10))
	console.log(bfs(7), visited)
	console.log(ret(arr))

相关文章:

  • 大津法(最大类间方差法OTSU)
  • 搭建ELK分布式日志系统
  • 电子竞价是如何运作的?
  • TypeScript 学习之路 - 基础篇
  • 将路径中的“\\”换成“/”的方法
  • (一)Dubbo快速入门、介绍、使用
  • java-多线程,一个线程执行完毕,其他线程跳出运算-利用线程组ThreadGroup(子线程中执行当前线程组的interrupt方法)
  • 三分钟读懂什么是动作捕捉
  • Android—Surface,ViewRootImpl.relayoutWindow
  • <C++>详解string类
  • (一) springboot详细介绍
  • (一)UDP基本编程步骤
  • (附源码)spring boot公选课在线选课系统 毕业设计 142011
  • 新作文杂志新作文杂志社新作文编辑部2022年第8期目录
  • d的nan讨论4
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  • Java面向对象及其三大特征
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • Nodejs和JavaWeb协助开发
  • vue2.0一起在懵逼的海洋里越陷越深(四)
  • Vue--数据传输
  • 关于使用markdown的方法(引自CSDN教程)
  • 类orAPI - 收藏集 - 掘金
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
  • 原生JS动态加载JS、CSS文件及代码脚本
  • 智能合约开发环境搭建及Hello World合约
  • 06-01 点餐小程序前台界面搭建
  • 湖北分布式智能数据采集方法有哪些?
  • 进程与线程(三)——进程/线程间通信
  • ​第20课 在Android Native开发中加入新的C++类
  • #ubuntu# #git# repository git config --global --add safe.directory
  • (12)目标检测_SSD基于pytorch搭建代码
  • (2022版)一套教程搞定k8s安装到实战 | RBAC
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (Git) gitignore基础使用
  • (附源码)springboot金融新闻信息服务系统 毕业设计651450
  • (附源码)springboot太原学院贫困生申请管理系统 毕业设计 101517
  • (附源码)ssm高校升本考试管理系统 毕业设计 201631
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (理论篇)httpmoudle和httphandler一览
  • (三)Hyperledger Fabric 1.1安装部署-chaincode测试
  • (十一)JAVA springboot ssm b2b2c多用户商城系统源码:服务网关Zuul高级篇
  • (一)Neo4j下载安装以及初次使用
  • (源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • ./configure,make,make install的作用
  • .equal()和==的区别 怎样判断字符串为空问题: Illegal invoke-super to void nio.file.AccessDeniedException
  • .NET Remoting Basic(10)-创建不同宿主的客户端与服务器端
  • .NET/C# 编译期能确定的字符串会在字符串暂存池中不会被 GC 垃圾回收掉
  • .Net+SQL Server企业应用性能优化笔记4——精确查找瓶颈
  • .NET的数据绑定
  • .Net开发笔记(二十)创建一个需要授权的第三方组件
  • /usr/bin/env: node: No such file or directory
  • ::什么意思