leetcode 111.二叉树的最小深度 Java

    科技2022-08-14  91

    二叉树的最小深度

    题目链接描述示例初始代码模板代码BFSDFS

    题目链接

    https://leetcode-cn.com/problems/minimum-depth-of-binary-tree/

    描述

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

    示例

    给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回它的最小深度 2.

    初始代码模板

    /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ class Solution { public int minDepth(TreeNode root) { } }

    代码

    很容易想到的思路,就是层序遍历,遇到叶子节点返回当前深度即可

    BFS

    /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ class Solution { public int minDepth(TreeNode root) { if (root == null) { return 0; } LinkedList<TreeNode> queue = new LinkedList<>(); queue.offer(root); int res = 1; while (!queue.isEmpty()) { for (int i = queue.size(); i > 0; i--) { TreeNode node = queue.poll(); if (node.left == null && node.right == null) { return res; } if (node.left != null) { queue.offer(node.left); } if (node.right != null) { queue.offer(node.right); } } res++; } return res; } }

    DFS

    注意叶子节点即可

    /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ class Solution { public int minDepth(TreeNode root) { if (root == null) { return 0; } int left = minDepth(root.left); int right = minDepth(root.right); return left == 0 || right == 0? right + left + 1 : Math.min(left, right) + 1; } }
    Processed: 0.011, SQL: 8