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

本文介绍了一种使用JavaScript实现的层次遍历算法,该算法可以遍历一个由节点组成的树形结构,并输出所有节点的值。文章通过具体实例展示了如何通过广度优先搜索(BFS)来实现这一过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

	//数组每个元素描述的父子节点,节点中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))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

呱嗨喵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值