(樹_)求最小深度
給定一個二叉樹,找出其最小深度。
最小深度是從根節點到最近葉子節點的最短路徑上的節點數量。
說明: 葉子節點是指沒有子節點的節點。
示例:
給定二叉樹 [3,9,20,null,null,15,7]
,
3 / \ 9 20 / \ 15 7
返回它的最小深度 2.
/**遞迴
* 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 getMin(TreeNode* root){
if(root == nullptr) return 0;
int leftDepth = getMin(root->left);
int rightDepth = getMin(root->right);
if(root->left == nullptr && root->right != nullptr){
return 1 + rightDepth;
}
if(root->left !=nullptr && root->right == nullptr){
return 1 + leftDepth;
}
return 1 + min(leftDepth, rightDepth);
}
int minDepth(TreeNode* root) {
if(root == nullptr) return 0;
return getMin(root);
}
};
/**迭代法:層次遍歷
* 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 == nullptr) return 0;
queue<TreeNode*> que;
que.push(root);
int depth = 0;
int flag = 0;
while(!que.empty()){
int size = que.size();
depth++;
for(int i = 0; i<size; i++){
TreeNode* node = que.front();
que.pop();
if(node->left) que.push(node->left);
if(node->right) que.push(node->right);
if(!node->left && !node->right){
flag = 1;
break;
}
}
if(flag == 1) break;
}
return depth;
}
};
相關文章
- 二叉樹的最大深度和最小深度二叉樹
- 二叉樹的最大/最小深度二叉樹
- 二叉樹的最小深度問題二叉樹
- 111. 二叉樹的最小深度二叉樹
- leetcode 111 二叉樹的最小深度LeetCode二叉樹
- 111. 二叉樹的最小深度(***)二叉樹
- 「leetcode」111.二叉樹的最小深度LeetCode二叉樹
- Boruvka求最小生成樹(菠蘿演算法)演算法
- 淺談三種求最小生成樹的方法
- 最小生成樹
- 求最小k個數
- 【模板】最小生成樹
- 最小度限制生成樹
- 最小斯坦納樹初探
- 【leetcode 簡單】第二十七題 二叉樹的最小深度LeetCode二叉樹
- Python求最小公倍數Python
- Day16 | 104.二叉樹的最大深度 、111.二叉樹的最小深度 、222.完全二叉樹的節點個數二叉樹
- 【模板】最小生成樹-kruskal
- 最小生成樹專項
- 圖論 最小生成樹圖論
- 圖的最小生成樹
- 演算法 最小高度樹演算法
- 【圖論】最小生成樹圖論
- 程式碼隨想錄day14 || 226 翻轉二叉樹,101 對稱二叉樹, 104 二叉樹的最大深度, 111 二叉樹的最小深度二叉樹
- 【JAVA演算法】圖論演算法 --求最小生成樹Prim演算法Java演算法圖論
- Prim 最小生成樹 圖解圖解
- prim 樸素 最小生成樹
- 刷題系列 - Python用遞迴實現求二叉樹深度Python遞迴二叉樹
- 程式碼隨想錄 第十六天 | ● 104.二叉樹的最大深度 559.n叉樹的最大深度 ● 111.二叉樹的最小深度 ● 222.完全二叉樹的節點個數二叉樹
- 最小生成樹學習筆記筆記
- Networking POJ - 1287(kuangbin最小生成樹)
- 專題六 最小生成樹【Kuangbin】
- 最小生成樹的演算法演算法
- 最小生成樹__Kurskal演算法演算法
- 最小生成樹__Prim演算法演算法
- bzoj3545: [ONTAK2010]Peaks(主席樹+最小生成樹)
- 程式碼隨想錄演算法訓練營day16 | leetcode 104. 二叉樹的最大深度、559. N 叉樹的最大深度、111. 二叉樹的最小深度、222. 完全二叉樹的節點個數演算法LeetCode二叉樹
- 資料結構實驗之二叉樹八:(中序後序)求二叉樹的深度資料結構二叉樹