import java.util.*; /* * public class TreeNode { * int val = 0; * TreeNode left = null; * TreeNode right = null; * public TreeNode(int val) { * this.val = val; * } * } */ public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param root TreeNode类 * @return int整型 */ // 全局变量,记录最小深度 int min = Integer.MAX_VALUE; /** * 深度优先搜索遍历二叉树,同时记录到达叶子节点的最小深度 * * @param root 二叉树的根节点 * @param level 当前节点的深度 */ public void dfs(TreeNode root, int level) { // 如果当前节点为空,直接返回 if (root == null) return; // 如果当前节点是叶子节点,并且深度小于最小深度,则更新最小深度的值 if (root.left == null && root.right == null) { if (level < min) min = level; } // 递归遍历左子树和右子树,深度加一 dfs(root.left, level + 1); dfs(root.right, level + 1); } /** * 计算二叉树的最小深度 * * @param root 二叉树的根节点 * @return 最小深度 */ public int minDepth(TreeNode root) { // 如果根节点为空,最小深度为0 if (root == null) return 0; // 递归遍历二叉树,计算最小深度 dfs(root, 1); return min; } }
代码用Java编写
该题考察的知识点:二叉树、遍历、DFS、叶子结点。
此代码实现了一个方法minDepth
,用于计算二叉树的最小深度。具体实现步骤如下:
- 定义一个全局变量
min
,表示最小深度,默认值为Integer.MAX_VALUE
。 - 实现
dfs
方法,该方法用于深度优先遍历二叉树,并记录到达叶子节点的最小深度。 - 在
dfs
方法中,如果当前节点为空,直接返回。如果当前节点是叶子节点,并且深度小于最小深度min
,则更新min
的值。然后递归遍历左子树和右子树,将深度加一。 - 实现
minDepth
方法,该方法用于计算二叉树的最小深度。 - 在
minDepth
方法中,首先判断根节点是否为空,若为空,则最小深度为0。然后通过调用dfs
方法,计算最小深度。 - 返回最小深度
min
作为结果。
整个过程使用深度优先搜索(DFS)来遍历二叉树,同时记录到达叶子节点的最小深度。最后返回计算得到的最小深度。