zoukankan      html  css  js  c++  java
  • leetcode 111 二叉树的最小深度

     1 /*
     2  * @lc app=leetcode.cn id=111 lang=cpp
     3  *
     4  * [111] 二叉树的最小深度
     5  */
     6 
     7 // @lc code=start
     8 /**
     9  * Definition for a binary tree node.
    10  * struct TreeNode {
    11  *     int val;
    12  *     TreeNode *left;
    13  *     TreeNode *right;
    14  *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
    15  *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
    16  *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
    17  * };
    18  */
    19 class Solution {
    20 public:
    21     /*
    22     终止条件、返回值和递归过程:
    23 1)当前节点root为空时,说明此处树的高度为0,0也是最小值。
    24 2)当前节点root的左子树和右子树都为空时,说明此处树的高度为1,1也是最小值。
    25 3)如果为其他情况,则说明当前节点有值,且需要分别计算其左右子树的最小深度,返回最小深度+1,+1表示当前节点存在有1个深度。
    26 时间复杂度:O(n),n为树的节点数量。
    27     */
    28     int minDepth(TreeNode* root) {
    29          //当前节点root为空时,说明此处树的高度为0,0也是最小值
    30         if(!root) return 0;
    31         //当到达叶子节点时,叶子节点的深度为1
    32        if(root->left==nullptr&&root->right==nullptr) return 1;
    33        int m=INT_MAX;
    34        //如果为其他情况,则说明当前节点有值,且需要分别计算其左右子树的最小深度,返回最小深度+1,+1表示当前节点存在有1个深度
    35        if(root->left!=nullptr) m=min(minDepth(root->left),m);
    36        if(root->right!=nullptr) m=min(minDepth(root->right),m);
    37        return m+1;
    38     }
    39 };
    40 // @lc code=end
  • 相关阅读:
    java 数组的基本概念
    java 简单类
    python3 爬虫教学之爬取链家二手房(最下面源码) //以更新源码
    python3 爬虫之爬取安居客二手房资讯(第一版)
    python3 怎么统计英文文档常用词?(附解释)
    python3 怎么爬取新闻网站?
    ASP.NET 线程详解
    EF6 对于实体字段类型转换扩展
    mysql之调优概论
    mysql8之与标准sql的区别
  • 原文地址:https://www.cnblogs.com/yaodao12/p/13939300.html
Copyright © 2011-2022 走看看