深度优先搜索(DFS) 思路与模板 —— 二叉树基础模板

深度优先搜索算法(英语:Depth-First-Search,DFS)是一种用于遍历或搜索树或图的算法。其过程简要来说是对每一个可能的分支路径深入到不能再深入为止,而且每个结点只能访问一次.

算法优先搜索

1. 二叉树有关问题

2. 需要从根节点遍历到末尾叶子节点

常见题型

满足(最大、最小,某种要求)的深度、路径、节点和.......


DFS思路

1. 创建结果存储变量,初始化当前结果

2. 设计递归函数

 — 函数执行过程

——  若到达结尾,则返回

—— 若未到达结尾,则更新当前结果

—— 若到达末尾叶子节点,进行最优结果更新

—— 分别对当前节点的左/右子节点调用递归函数

3. 开始调用递归函数


DFS代码模板

function dfSTemplate(root){
		// 存储当前结果
		let res;
		// 初始化当前结果
		let start;
		// 构造递归函数dfs,通常参数为当前节点和当前结果
		let dfs = (node,currentResult)=>{
			// 终止条件返回判断
			if(node == null){
				return
			}
			// 更新当前结果currentResult
			
			// 若到达末尾叶子结点,进行最优结果更新
			if(node.left == null && node.right == null){
				// 更新最优结果 res
			}
			//  左右子树递归
			dfs(node.left,currentResult);
			dfs(node.right,currentResult);
		}
		dfs(root,start);
		return res;
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值