题解 | #二叉树的最小深度# [P3]

二叉树的最小深度

http://www.nowcoder.com/practice/6a7f40d7696d46f79c74c61179993be6

这题因为是找最浅的leaf node,明显BFS会更合适。
那对于二叉树,BFS就是levelOrder traversal。找到第一个leaf就直接return当前深度。
时间O(n) 空间O(n)

import java.util.*;

public class Solution {
    public int run (TreeNode root) {
      if (root == null) return 0;
      
      Queue<TreeNode> q = new LinkedList<>();
      q.offer(root);
      int depth = 0;
      while (!q.isEmpty()) {
        depth++;
        int levelSize = q.size();
        for (int i = 0; i < levelSize; i++) {
          TreeNode head = q.poll();
          // 遇到第一个leaf node就直接返回当前depth.
          if (head.left == null && head.right == null) return depth;
          if (head.left != null) q.offer(head.left);
          if (head.right != null) q.offer(head.right);
        }
      }
      
      // should not get here
      return 0;
    }
}
全部评论

相关推荐

qz鹿:*** 祝他毕业就失业
点赞 评论 收藏
分享
12-04 20:41
南华大学 C++
牛客774533464号:现在要求你有实习经验,才让你实习!
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务