当前位置: 首页 > article >正文

力扣111二叉树的最小深度(DFS)

Problem: 111. 二叉树的最小深度

文章目录

  • 题目描述
  • 思路
  • 复杂度
  • Code

题目描述

在这里插入图片描述在这里插入图片描述

思路

1.欲望求出最短的路径,先可以记录一个变量minDepth,同时记录每次当前节点所在的层数currentDepth
2.在递的过程中,每次递一层,也即使当前又往下走了一层,则currentDepth++,当到达叶子节点时,比较并取出min【minDepth, currentDepth】
3.在归的过程中,因为是在往上层归,则currentDepth–;
4.返回最终的minDepth即可

复杂度

时间复杂度:

O ( n ) O(n) O(n);其中 n n n为二叉树的节点个数

空间复杂度:

O ( h ) O(h) O(h);最坏空间复杂度

Code

DFS

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
     // record the minimum depth 
        private int minDepth = Integer.MAX_VALUE;
        // record the depth of the current node being traversed
        private int currentDepth = 0;

    public int minDepth(TreeNode root) {
       if (root == null) {
        return 0;
       }
       // start DFS traverssal from the root node
       travers(root);
       return minDepth;
    }

    private void travers(TreeNode root) {
        if (root == null) {
            return;
        }
    // increase the current depth when entering a node in the preorder position
    currentDepth++;

    // if the current node is a leaf, update the minimum depth
    if (root.left == null && root.right == null) {
        minDepth = Math.min(minDepth, currentDepth);
    }

    travers(root.left);
    travers(root.right);

    // decrease the current depth when leaving a node in the postorder position
    currentDepth--;

    }
}

http://www.kler.cn/a/522473.html

相关文章:

  • pytorch逻辑回归实现垃圾邮件检测
  • 2024年个人总结
  • 机器学习(三)
  • 基于亿坊PHP框架构建物联网解决方案的优势分析!
  • 判断子序列
  • Elasticsearch——Elasticsearch性能优化实战
  • three.js+WebGL踩坑经验合集(4.2):为什么不在可视范围内的3D点投影到2D的结果这么不可靠
  • 改进候鸟优化算法之三:引入自适应策略的候鸟优化算法(AS-MBO)
  • powershell和linux各自一个简单易懂的小demo, to be modified.
  • 某公交管理系统简易逻辑漏洞+SQL注入挖掘
  • java求职学习day18
  • echo ‘export PATH=/usr/local/bin:$PATH‘ >> ~/.bashrc这个和直接添加到/etc/profile有什么区别
  • 2025美国大学生数学建模竞赛美赛E题成品参考论文(48页)(含模型,可运行代码,求解结果)
  • 代码随想录算法训练营第三十七天-动态规划-完全背包-377. 组合总和 Ⅳ
  • 使用 PyTorch 实现逻辑回归:从数据到模型保存与加载
  • 家政预约小程序11分类展示
  • 【Elasticsearch】doc_values
  • UDP/TCP ④-延时应答 || 捎带应答 || 粘包问题 || 异常处理
  • pycharm光标变成白格子 黑格子
  • 第05章 08 绘制脑部体绘制图的阈值等值面
  • Node.js 全局对象
  • web前端11--伪类与过渡
  • 循环神经网络(RNN)+pytorch实现情感分析
  • 解锁微服务:五大进阶业务场景深度剖析
  • 2025数学建模美赛|F题成品论文
  • 讯飞绘镜(ai生成视频)技术浅析(二):大模型