题目链接
    image.png
    广度优先:一层一层遍历,当找到有一个叶子节点是空的时候,就找到了最小值。

    1. /**
    2. * Definition for a binary tree node.
    3. * public class TreeNode {
    4. * int val;
    5. * TreeNode left;
    6. * TreeNode right;
    7. * TreeNode() {}
    8. * TreeNode(int val) { this.val = val; }
    9. * TreeNode(int val, TreeNode left, TreeNode right) {
    10. * this.val = val;
    11. * this.left = left;
    12. * this.right = right;
    13. * }
    14. * }
    15. */
    16. class Solution {
    17. // 构建包装节点的类
    18. public class QueueNode {
    19. TreeNode node;
    20. int dep;
    21. QueueNode(TreeNode node,int dep) {
    22. this.node = node;
    23. this.dep = dep;
    24. }
    25. }
    26. // 广度优先
    27. public int minDepth(TreeNode root) {
    28. if(root == null) {
    29. return 0;
    30. }
    31. Queue<QueueNode> queue = new LinkedList<>();
    32. queue.offer(new QueueNode(root, 1)); // offer加入,poll出队列
    33. while(!queue.isEmpty()) { // 空的话就无法获取节点
    34. QueueNode node = queue.poll();
    35. TreeNode n1 = node.node;
    36. if(n1.left == null && n1.right == null) {
    37. return node.dep;
    38. }
    39. if(n1.left != null) {
    40. queue.offer(new QueueNode(n1.left, node.dep+1));
    41. }
    42. if(n1.right != null) {
    43. queue.offer(new QueueNode(n1.right, node.dep+1));
    44. }
    45. }
    46. return 0;
    47. }
    48. }