LeetCode111. 二叉树的最小深度

谁借莪1个温暖的怀抱¢ 2022-05-09 12:26 319阅读 0赞

给定一个二叉树,找出其最小深度。

最小深度是从根节点到最近叶子节点的最短路径上的节点数量。

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

示例:

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

  1. 3
  2. / \
  3. 9 20
  4. / \
  5. 15 7

返回它的最小深度 2.


思路:广度优先遍历二叉树,记录遍历到的层数,当找到第一个叶子结点时,该叶子结点所在层数就是二叉树的最小深度。

  1. /**
  2. * Definition for a binary tree node.
  3. * public class TreeNode {
  4. * int val;
  5. * TreeNode left;
  6. * TreeNode right;
  7. * TreeNode(int x) { val = x; }
  8. * }
  9. */
  10. class Solution {
  11. public int minDepth(TreeNode root) {
  12. if(null==root){
  13. return 0;
  14. }
  15. ArrayDeque<TreeNode> queue=new ArrayDeque<TreeNode>();
  16. queue.add(root);
  17. int min=0;
  18. while(!queue.isEmpty()){
  19. int size=queue.size();
  20. int flag=0;
  21. for(int i=0;i<size;i++){
  22. TreeNode node=queue.removeFirst();
  23. if(null==node.left&&null==node.right){//找到叶子结点
  24. flag=1;
  25. }
  26. if(null!=node.left){
  27. queue.add(node.left);
  28. }
  29. if(null!=node.right){
  30. queue.add(node.right);
  31. }
  32. }
  33. min++;
  34. if(flag!=0){
  35. break;
  36. }
  37. }
  38. return min;
  39. }
  40. }

发表评论

表情:
评论列表 (有 0 条评论,319人围观)

还没有评论,来说两句吧...

相关阅读