二叉树的最小深度

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

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

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

  • 示例:

给定二叉树[3,9,20,null,null,15,7]

    3/ \9  20/  \15   7

返回它的最小深度 2.

  • c++ 广度优先
/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/
class Solution {
public:int minDepth(TreeNode* root) {std::queue<TreeNode*> nodeQueue;int res = 0;if (root) {if (!root->left && !root->right) {return 1;} else {res++;nodeQueue.push(root);}} else {return 0;}while(!nodeQueue.empty()) {auto nodeQueueSize = nodeQueue.size();for (int i=0; i<nodeQueueSize; i++) {auto node = nodeQueue.front();if (!node->left && !node->right) {return res;} else {if (node->left) {nodeQueue.push(node->left);}if (node->right) {nodeQueue.push(node->right);}}nodeQueue.pop();}res++;}return res;}
};
  • c++ 递归
/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/
class Solution {
public:int minDepth(TreeNode* root) {if (!root) {return 0;}if (!root->left && !root->right) {return 1;}auto min_depth = INT_MAX;if (root->left) {min_depth = min(minDepth(root->left), min_depth);}if (root->right) {min_depth = min(minDepth(root->right), min_depth);}return min_depth + 1;}
};
  • Python 递归
# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = Noneclass Solution:def minDepth(self, root: TreeNode) -> int:if not root:return 0children = [root.left, root.right]if not any(children):return 1min_depth = float('inf')for c in children:if (c):min_depth = min(self.minDepth(c), min_depth)return min_depth + 1

来源:力扣(LeetCode)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/375570.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(转)会议期刊论文发表介绍(计算机科学领域)

转自&#xff1a;http://blog.csdn.net/babyfacer/archive/2009/07/25/4377552.aspx 一、计算机科学期刊介绍计算机科学的publication最大特点在于&#xff1a;极度重视会议&#xff0c;而期刊则通常只用来做re- publication。大部分期刊文章都是会议论文的扩展版&#xff0c;首…

笑男手札:SharePoint 2013 单一服务器场环境恢复数据库内容

SharePoint 2013 单一服务器场环境恢复数据库内容 笑男的公司服务很多客户&#xff0c;当然&#xff0c;这些客户都很挑剔&#xff0c;所以一般情况下生产&#xff08;Prod&#xff09;环境的服务是不能停的。 当然&#xff0c;如果你将包含相同网站集的数据库连接到同一个服务…

数组中数字出现的次数

一个整型数组 nums 里除两个数字之外&#xff0c;其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n)&#xff0c;空间复杂度是O(1)。 示例 1&#xff1a; 输入&#xff1a;nums [4,1,4,6] 输出&#xff1a;[1,6] 或 [6,1]示例 2&#xff1a;…

【转】String Date Calendar之间的转换

1.Calendar 转化 String Calendar calendat Calendar.getInstance(); SimpleDateFormat sdf new SimpleDateFormat("yyyy-MM-dd"); String dateStr sdf.format(calendar.getTime()); 2.String 转化Calendar String str"2012-5-27"; SimpleDateFormat sd…

图解 深入浅出 JavaWeb:Servlet 再说几句

Writer &#xff1a;BYSocket&#xff08;泥沙砖瓦浆木匠&#xff09; 微 博&#xff1a;BYSocket 豆 瓣&#xff1a;BYSocket FaceBook&#xff1a;BYSocket Twitter &#xff1a;BYSocket 上一篇的《 Servlet必会必知 》受到大家一致好评 — (感谢 读…

react.js 从零开始(五)React 中事件的用法

事件系统 虚拟事件对象 事件处理器将会传入虚拟事件对象的实例&#xff0c;一个对浏览器本地事件的跨浏览器封装。它有和浏览器本地事件相同的属性和方法&#xff0c;包括 stopPropagation() 和 preventDefault()&#xff0c;但是没有浏览器兼容问题。 如果因为一些因素&#x…

乘积的最大子数组

给你一个整数数组 nums &#xff0c;请你找出数组中乘积最大的连续子数组&#xff08;该子数组中至少包含一个数字&#xff09;&#xff0c;并返回该子数组所对应的乘积。 示例 1: 输入: [2,3,-2,4] 输出: 6 解释: 子数组 [2,3] 有最大乘积 6。示例 2: 输入: [-2,0,-1] 输出…

javascript new

1. 仅function可以使用new 2. function使用new时&#xff0c;会拷贝function中this的内容给新对象&#xff0c;并将function的prototype指向新对象&#xff08;如果该function没有prototype&#xff0c;则指向Object的prototype&#xff09; 注&#xff1a;function本身不是Obj…

!+\v1 用来“判断浏览器类型”还是用来“IE判断版本”的问题!

这种写法是利用各浏览器对转义字符"\v"的理解不同来判断浏览器类型。在IE中&#xff0c;"\v"没有转义&#xff0c;得到的结果为"v"。而在其他浏览器中"\v"表示一个垂直制表符&#xff0c;所以ie解析的"\v1" 为 "v1&quo…

三个数的最大乘积

给定一个整型数组&#xff0c;在数组中找出由三个数组成的最大乘积&#xff0c;并输出这个乘积。 示例 1: 输入: [1,2,3] 输出: 6示例 2: 输入: [1,2,3,4] 输出: 24注意: 给定的整型数组长度范围是[3,104]&#xff0c;数组中所有的元素范围是[-1000, 1000]。 输入的数组中任…

VB.NET 数组的定义 动态使用 多维数组

我们都知道在全部程序设计语言中数组都是一个非常重要的概念&#xff0c;数组的作用是同意程序猿用同一个名称来引用多个变量&#xff0c;因此採用数组索引来区分这些变量。非常多情况下利用数组索引来设置一个循环&#xff0c;这样就能够高效地处理复杂的情况&#xff0c;因此…

web.xml 中的listener、 filter、servlet 加载顺序

1&#xff1a;首先是context-param节点 2&#xff1a;接着配置和调用listeners 并开始监听 3&#xff1a;然后配置和调用filters filters开始起作用 4&#xff1a;最后加载和初始化配置在load on startup的servlets转载于:https://www.cnblogs.com/dwchenxj/p/4787717.html

这么多个月,我头一次体验用类的概念来写驱动

原来感觉一样是那么爽阿。。。快乐得不得了。。。转载于:https://www.cnblogs.com/suanguade/p/4038190.html

设置Chrome忽略网站证书错误

本人在XP下使用Chrome。总是莫名其妙的提示整数错误&#xff0c;一部分https网站无法直接访问。网上找了下&#xff0c;把解决思路记录下来。 解决这个问题很简单,只需要修改你平时用来启动Chrome的快捷方式就可以忽略掉证书错误. 具体的操作方法是这样的: 找到你的Chrome快捷方…

Android开发之合并文件的几种方式

以下介绍合并文件的几种方式&#xff0c;并通过合并amr文件来举例介绍合并文件的详细流程。amr格式的文件头是6字节&#xff0c;所以在进行文件合并的时候要减去除第一个文件以外的其它文件的文件头。 注意&#xff1a;不同文件的文件头是不一样的&#xff0c;所以在合并的时候…

数组中出现次数超过一半的数

数组中有一个数字出现的次数超过数组长度的一半&#xff0c;请找出这个数字。 你可以假设数组是非空的&#xff0c;并且给定的数组总是存在多数元素。 示例 1: 输入: [1, 2, 3, 2, 2, 2, 5, 4, 2] 输出: 2限制&#xff1a; 1 < 数组长度 < 50000class Solution { pub…

中国寒龙反网络病毒联盟核心小组:官方公告,近期本站将会发布各种编程技术视频教程,详情请点击我们的以下公告!...

大家好&#xff0c;我是中国寒反网络病毒联盟官方客服&#xff01; 近期&#xff0c;本站将全面升级&#xff0c;本站发布各种编程视频教程&#xff0c;包括C,c#以及VB&#xff0c;VB.net&#xff0c;E&#xff0c;等相关编程语言入门视频教程&#xff0c;每天会定期更新视频教…

javascript学习-原生javascript的小特效(多个运动效果整理)

以下代码就不详细解析了&#xff0c;在我之前的多个运动效果中已经解析好多次了&#xff0c;重复的地方这里就不说明了&#xff0c;有兴趣的童鞋可以去看看之前的文章《原生javascript的小特效》 <!DOCTYPE HTML> <html lang"en-US"> <head> <m…

linux在指定目录多个文件中搜索关键字

find 文件目录 -name *.* -exec grep xxx {} -n\;# -n显示行号find 文件目录 -name *.* | xargs grep xxx -ngrep xxx 文件目录 -Rngrep xxx find 文件目录 -name *.*

$ npm install opencv ? 你试试?! 在windows环境下,使用node.js调用opencv攻略

博主之前写过一篇文章《html5与EmguCV前后端实现——人脸识别篇》&#xff0c;叙述的是opencv和C#的故事。最近在公司服务器上更新了一套nodejs环境&#xff0c;早就听闻npm上有opencv模块&#xff0c;便欲部署之。然而opencv的部署似乎从来都不会那么顺利...... 找模块上https…