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)来遍历二叉树,同时记录到达叶子节点的最小深度。最后返回计算得到的最小深度。

京公网安备 11010502036488号