111. 二叉树的最小深度

125 阅读1分钟

给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。

说明: 叶子节点是指没有子节点的节点。

示例:
给定二叉树 [3,9,20,null,null,15,7],

    3
   / \
  9  20
    /  \
   15   7

返回它的最小深度  2.

题解:

  • 这道题让我们求最小深度,典型的DFS问题

  • 同样的找3个关键点

    • 终止条件:遍历到空,返回0
    • 调用单元做了什么:如果当前节点有一个子节点为空,那么对存在的那个节点调用递归函数,并+1,如果子节点都在,那么取小的+1返回
    • 返回值:当前节点的最小深度
public int minDepth(TreeNode root) {
    if (root == null) return 0;
    int left = minDepth(root.left);
    int right = minDepth(root.right);
    if (left == 0 || right == 0) return left + right + 1;
    return Math.min(left, right) + 1;
}