111. 二叉树的最小深度(BFS)

小灰灰 2023-10-05 14:54 136阅读 0赞

111. 二叉树的最小深度

  • 题目
  • 解题思路
  • 代码

题目

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

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

说明:叶子节点是指没有子节点的节点。
在这里插入图片描述
提示:

  • 树中节点数的范围在 [0, 105] 内
  • -1000 <= Node.val <= 1000

解题思路

这题一看要求最短路径,第一反应就是BFS。 这题很简单直接套用BFS模板就行了。

代码

  1. class Solution {
  2. public int minDepth(TreeNode root) {
  3. Queue<TreeNode> queue=new LinkedList<>();//核心数据结构
  4. if(root==null){
  5. return 0;
  6. }
  7. queue.add(root);//首先把根节点给加到队列中
  8. int step=0;//初始化步数为0
  9. while(!queue.isEmpty()){
  10. //当队列不空的时候
  11. step++;//首先步数加一,之所以写在最前面,是因为把root放入队列这也算一步
  12. int size=queue.size();
  13. /* 将当前队列中的所有节点向四周扩散 */
  14. while(size-->0){
  15. TreeNode tree=queue.poll();
  16. if(tree.left==null&&tree.right==null){
  17. //满足目标直接返回
  18. return step;
  19. }
  20. if(tree.left!=null){
  21. //如果它有节点就把节点放入队列
  22. queue.add(tree.left);
  23. }
  24. if(tree.right!=null){
  25. queue.add(tree.right);
  26. }
  27. }
  28. }
  29. return -1;
  30. }
  31. }

发表评论

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

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

相关阅读