树的先序/中序/后序遍历

这篇博客详细介绍了树的三种遍历方式:前序、中序和后序遍历,并提供了对应的深度搜索(DFS)和广度搜索(BFS)的代码实现。通过示例展示了不同遍历顺序的特点,帮助理解数据结构中的树遍历概念。此外,还提及了层级遍历的重要特性。

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

树的结构如下:
在这里插入图片描述
先序(深度搜索遍历DFS):先顶点,再左边节点,接着右边节点
在这里插入图片描述
前序结果:ABDEHICFG

中序:先左边节点,再顶点,最后右边节点
z
中序结果:DBHEIAFCG

后序:先左边节点,然后右边节点,最后为顶点
在这里插入图片描述
后序结果:DHIEBFGCA

树的三只序遍历结果:
在这里插入图片描述
前序中序后序主要是记住顶点的顺序,顶点先遍历的是前序,顶点在中间遍历的是中序,顶点最后遍历的是后序,无论哪种序都是先遍历左节点再遍历右节点。

树的层级遍历(广度搜索遍历)是按照层级遍历,即先第一层再第二层第三层。。。
在这里插入图片描述
层级遍历结果:ABCDEFGHI

深度搜索遍历(DFS)代码实现:

function myDFS(node){
	let stack = [], nodeList = [];
	if(node){
		stack.push(node);
		while(stack.length){
			let item = stack.pop();
			if(item){
				nodeList.push(item);
				let children = item.children;
				if(children){
					for(let i = children.length - 1; i >= 0; i--){
						stack.push(children[i]);
					}
				}
			}
		}
	}
	return nodeList;
}

广度搜索遍历(BFS)代码实现:

function myBFS(node){
	let queue = [], nodeList = [];
	if(node){
		queue.push(node);
		while(queue.length){
			let item = queue.shift();
			if(item){
				nodeList.push(item);
				let children = item.children;
				if(children){
					for(let i = 0, len = children.length; i < len; i++){
						queue.push(children[i]);
					}
				}
			}
		}
	}
	return nodeList;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值