【力扣】104. 二叉树的最大深度、111. 二叉树的最小深度

104. 二叉树的最大深度

题目描述

给定一个二叉树 root ,返回其最大深度。

二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。

示例 1:
在这里插入图片描述

输入:root = [3,9,20,null,null,15,7]
输出:3

示例 2:

输入:root = [1,null,2]
输出:2

提示:

  • 树中节点的数量在 [0, 104] 区间内。
  • -100 <= Node.val <= 100

解题方法

  • C 深度优先搜索——递归
/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */
int my_max(int a, int b) {
    if (a > b)
        return a;
    else
        return b;
}

int maxDepth(struct TreeNode* root) {
    if (NULL == root) {
        return 0;
    }
    int left = maxDepth(root->left);
    int right = maxDepth(root->right);
    return my_max(left, right) + 1;
}

复杂度分析
时间复杂度:O(n),其中 n 为二叉树节点的个数。
空间复杂度:O(h),其中 h表示二叉树的高度。递归函数需要栈空间,而栈空间取决于递归的深度,因此空间复杂度等价于二叉树的高度。


111. 二叉树的最小深度

题目描述

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

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

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

示例 1:
在这里插入图片描述

输入:root = [3,9,20,null,null,15,7]
输出:2

示例 2:

输入:root = [2,null,3,null,4,null,5,null,6]
输出:5

提示:

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

解题方法

  • C 深度搜索——递归
/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */
int my_min(int a, int b) {
    if (a > b)
        return b;
    else
        return a;
}

int minDepth(struct TreeNode* root) {
    if (NULL == root) {
        return 0;
    }
    if (NULL == root->left && NULL == root->right) {
        return 1;
    }

    int min_depth = INT_MAX;
    if (NULL != root->left) {
        min_depth = my_min(minDepth(root->left), min_depth);
    }

    if (NULL != root->right) {
        min_depth = my_min(minDepth(root->right), min_depth);
    }

    return min_depth + 1;
}

复杂度分析
时间复杂度:O(N),其中 N 是树的节点数。对每个节点访问一次。
空间复杂度:O(H),其中 H 是树的高度。空间复杂度主要取决于递归时栈空间的开销,最坏情况下,树呈现链状,空间复杂度为 O(N)。平均情况下树的高度与节点数的对数正相关,空间复杂度为 O(log⁡N)。

参考@力扣官方题解

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-12 04:10:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-12 04:10:01       101 阅读
  3. 在Django里面运行非项目文件

    2024-04-12 04:10:01       82 阅读
  4. Python语言-面向对象

    2024-04-12 04:10:01       91 阅读

热门阅读

  1. Web蓝桥杯刷题记录——燃烧你的卡路里

    2024-04-12 04:10:01       37 阅读
  2. oracle全量、增量备份

    2024-04-12 04:10:01       39 阅读
  3. 【Python】Python中大文件切割的艺术

    2024-04-12 04:10:01       41 阅读
  4. leetcode解题思路分析(一百五十五)1352 - 1358 题

    2024-04-12 04:10:01       37 阅读
  5. 0411代码,备战蓝桥杯基础数据结构

    2024-04-12 04:10:01       34 阅读
  6. fzf模糊查找工具

    2024-04-12 04:10:01       32 阅读
  7. 我心目中的福克斯和马自达

    2024-04-12 04:10:01       38 阅读
  8. Redis面试题1

    2024-04-12 04:10:01       39 阅读
  9. jQuery 数字金额转化为英文大写

    2024-04-12 04:10:01       37 阅读
  10. 拷贝控制总结

    2024-04-12 04:10:01       30 阅读