1. 题目描述

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

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

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

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

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

返回它的最小深度 2.

2. 解题思路

设置一个level,表示当前的层数,然后对二叉树进行层序遍历,直到某个节点没有左右子树,结束遍历,返回level

3. 代码实现

  1. /**
  2. * Definition for a binary tree node.
  3. * function TreeNode(val) {
  4. * this.val = val;
  5. * this.left = this.right = null;
  6. * }
  7. */
  8. /**
  9. * @param {TreeNode} root
  10. * @return {number}
  11. */
  12. var minDepth = function(root) {
  13. if(!root){
  14. return 0;
  15. }
  16. var level = 0;
  17. var queue = [root];
  18. while(queue.length){
  19. level += 1;
  20. var len = queue.length;
  21. while(len--){
  22. var node = queue.shift();
  23. if (!node.left&&!node.right){
  24. return level;
  25. }
  26. if(node.left){
  27. queue.push(node.left);
  28. }
  29. if(node.right){
  30. queue.push(node.right);
  31. }
  32. }
  33. }
  34. return level;
  35. };

4. 提交结果

111. 二叉树的最小深度 - 图1