二叉樹的最小深度

給定一個二叉樹,找出其最小深度。

最小深度是從根節點到最近葉子節點的最短路徑上的節點數量。

說明: 葉子節點是指沒有子節點的節點。

  • 示例:

給定二叉樹[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.pswp.cn/news/375570.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/375570.shtml
英文地址,請注明出處:http://en.pswp.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…