給定乙個二叉樹,找出其最小深度。
最小深度是從根節點到最近葉子節點的最短路徑上的節點數量。
說明:
葉子節點是指沒有子節點的節點。
示例 1:
輸入:root = [3,9,20,null,null,15,7]示例 2:輸出:2
輸入:root = [2,null,3,null,4,null,5,null,6]本題有多種寫法,殊途同歸都是用的遞迴輸出:5
二叉樹的定義:
方法一:/**
* definition for a binary tree node.
* struct treenode
* treenode(int x) : val(x), left(nullptr), right(nullptr) {}
* treenode(int x, treenode *left, treenode *right) : val(x), left(left), right(right) {}
* };
*/
方法二:class
solution
}
方法三:class
solution
}
class
solution
// 計算左子樹的深度
int left =
mindepth
(root.left)
;// 計算右子樹的深度
int right =
mindepth
(root.right)
;// 如果左子樹或右子樹的深度不為 0,即存在乙個子樹,那麼當前子樹的最小深度就是該子樹的深度+1
// 如果左子樹和右子樹的深度都不為 0,即左右子樹都存在,那麼當前子樹的最小深度就是它們較小值+1
return
(left ==
0|| right ==0)
? left + right +
1: math.
min(left, right)+1
;}}
二叉樹最小深度
最小深度是從根節點到最近葉子節點的最短路徑上的節點數量。遞迴,若為空樹返回0 若左右子樹都為空,則返回 1 若左子樹為空,則返回右子樹的最小深度 1 若右子樹為空,則返回左子樹的最小深度 1 若左右子樹均不為空,則取左 右子樹最小深度的較小值,1 definition for a binary tr...
二叉樹的最小深度
題目 給定乙個二叉樹,找出其最小深度。二叉樹的最小深度為根節點到最近葉子節點的距離。樣例給出一棵如下的二叉樹 1 2 3 4 5 這個二叉樹的最小深度為 2 思路 開始以為和求最大深度似的乙隻去深度最小,後來想想不對。要處理節點的左子樹是空或者右字樹是空的情況,而且每次處理的方式相同,提示我運用遞迴...
二叉樹的最小深度
給定乙個二叉樹,找出其最小深度。二叉樹的最小深度為根節點到最近葉子節點的距離。樣例 給出一棵如下的二叉樹 1 2 3 4 5 這個二叉樹的最小深度為 2 class solution if root right null root left null p mindepth root left 1 q...