目录
力扣(LeetCode)上的题目111是关于二叉树的最小深度问题。这个问题可以通过深度优先搜索(DFS)和广度优先搜索(BFS)两种方法来解决。下面我将分别对这两种方法进行讲解。
问题描述
给定一个二叉树,找出它的最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。
本题还有一个误区,题目中说的是:最小深度是从根节点到最近叶子节点的最短路径上的节点数量。,注意是叶子节点。
什么是叶子节点,左右都为空的节点才是叶子节点!
DFS(深度优先搜索)方案
DFS是一种自顶向下的搜索策略,它从根节点开始,尽可能深地搜索树的分支。在这个问题中,我们可以递归地遍历二叉树的每个节点,直到到达叶子节点。
- 基本情况:如果当前节点为空,返回0。
- 递归:分别对当前节点的左子树和右子树调用DFS,获取它们的最小深度。
- 比较:比较左子树和右子树的深度,取较小者加1(当前节点的深度)。
function minDepth(root) {
// 基本情况:如果根节点为空,返回0,因为