111. 二叉树的最小深度

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

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

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


image.png

分析

  • 最大的深度理解,最小深度一下子懵了不知道如何解析
  • 最小深度是从根节点到最近叶子节点的最短路径上的节点数量
    这个问题难点在哪来 加入是null节点的距离就不能需要计算

第一版本:

int minDepth(struct TreeNode* root) {
  if (root ==NULL) 
  {
         return 0;
  }
    
    int left=minDepth(root->left);
    int right=minDepth(root->right);
    //1 节点本身  2 left right子节点
    return left<right?left:right+1;
}
image.png

运算符优先级 (left<right?left:right)+1;

第二版本:

int minDepth(struct TreeNode* root) {
  if (root ==NULL) 
  {
         return 0;
  }
    
    int left=minDepth(root->left);
    int right=minDepth(root->right);
    //1 节点本身  2 left right子节点
    return (left<right?left:right)+1;
}
image.png

min(0,any)=0 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。

第三版本:

int minDepth(struct TreeNode* root) {
  if (root ==NULL) 
  {
         return 0;
  }
    
    int left=minDepth(root->left);
    int right=minDepth(root->right);
    if (left ==0 || right ==0) 
    {
       return left+right+1;    //最坏情况是没有最大深度就是最小深度 因为只有一个深度 一个路径
    }
    //1 节点本身  2 left right子节点
    return (left<right?left:right)+1;
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明: 叶子节点是指没...
    Buyun0阅读 375评论 0 0
  • 给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明: 叶子节点是指没有子...
    vbuer阅读 91评论 0 0
  • 树的概述 树是一种非常常用的数据结构,树与前面介绍的线性表,栈,队列等线性结构不同,树是一种非线性结构 1.树的定...
    Jack921阅读 4,523评论 1 31
  • - 简介 红黑树(Red Black Tree) 是一种近似平衡二叉查找树,具有基本二叉树的所有特性的同时,还...
    厦门张明爽阅读 608评论 0 1
  • 青海湖,是镶嵌在中国大西北的一颗蓝宝石,它是中国最美的湖。它的美让无数人心驰神往!八月中旬,我陪家人、朋友自...
    Joan简阅读 377评论 3 0