111. 二叉樹的最小深度(***)
給定一個二叉樹,找出其最小深度。
最小深度是從根節點到最近葉子節點的最短路徑上的節點數量。
說明: 葉子節點是指沒有子節點的節點。
示例:
給定二叉樹 [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回它的最小深度 2.
注意:它是到最近的葉子節點,要多考慮根節點
class Solution {
public int minDepth(TreeNode root) {
if(root == null)
return 0;
int leftH = minDepth(root.left);
int rightH = minDepth(root.right);
if(leftH == 0 || rightH == 0)
return leftH + rightH + 1;
else
return Math.min(leftH,rightH) + 1;
}
}
class Solution {
public int minDepth(TreeNode root) {
if(root == null)
return 0;
int leftH = 0;
if(root.left != null)
leftH = minDepth(root.left);
int rightH = 0;
if(root.right != null)
rightH = minDepth(root.right);
if(leftH == 0)
return rightH + 1;
else if(rightH == 0)
return leftH + 1;
else
return Math.min(leftH,rightH) + 1;
}
}
和按行列印二叉樹一樣,噹噹前節點cur和last節點相同的時候,說明要換行了!
class Solution {
public int minDepth(TreeNode root) {
if(root == null)
return 0;
int res = 1;
TreeNode nlast = null;
TreeNode last = root;
Queue<TreeNode> queue = new LinkedList();
queue.offer(root);
nlast = root;
while(!queue.isEmpty()){
TreeNode cur = queue.poll();
if(cur.left == null && cur.right == null )
return res;
if(cur.left != null){
queue.offer(cur.left);
nlast = cur.left;
}
if(cur.right != null){
queue.offer(cur.right);
nlast = cur.right;
}
if(cur == last){
last = nlast;
res++;
}
}
return res;
}
}
相關文章
- 111. 二叉樹的最小深度二叉樹
- 「leetcode」111.二叉樹的最小深度LeetCode二叉樹
- 二叉樹的最大深度和最小深度二叉樹
- 二叉樹的最大/最小深度二叉樹
- Day16 | 104.二叉樹的最大深度 、111.二叉樹的最小深度 、222.完全二叉樹的節點個數二叉樹
- 二叉樹的最小深度問題二叉樹
- 程式碼隨想錄 第十六天 | ● 104.二叉樹的最大深度 559.n叉樹的最大深度 ● 111.二叉樹的最小深度 ● 222.完全二叉樹的節點個數二叉樹
- 程式碼隨想錄演算法訓練營第第16天 | 104.二叉樹的最大深度 、111.二叉樹的最小深度、222.完全二叉樹的節點個數演算法二叉樹
- 程式碼隨想錄演算法訓練營第十六天 | 104.二叉樹的最大深度 111.二叉樹的最小深度 222.二叉樹的節點個數演算法二叉樹
- 程式碼隨想錄演算法訓練營day16 | leetcode 104. 二叉樹的最大深度、559. N 叉樹的最大深度、111. 二叉樹的最小深度、222. 完全二叉樹的節點個數演算法LeetCode二叉樹
- leetcode 111 二叉樹的最小深度LeetCode二叉樹
- 二叉樹的最小高度,最大高度(深度)和寬度二叉樹
- 程式碼隨想錄演算法訓練營第十四天| 226.翻轉二叉樹 、101. 對稱二叉樹、104.二叉樹的最大深度 (優先掌握遞迴)、111.二叉樹的最小深度演算法二叉樹遞迴
- 二叉樹的深度二叉樹
- 二叉樹深度二叉樹
- 二叉樹---深度二叉樹
- 程式碼隨想錄day14 || 226 翻轉二叉樹,101 對稱二叉樹, 104 二叉樹的最大深度, 111 二叉樹的最小深度二叉樹
- 二叉樹的子結構、深度以及重建二叉樹二叉樹
- 【leetcode 簡單】第二十七題 二叉樹的最小深度LeetCode二叉樹
- JZ-038-二叉樹的深度二叉樹
- 二叉樹的深度、寬度遍歷及平衡樹二叉樹
- 【劍指offer】二叉樹深度二叉樹
- Python二叉樹的三種深度Python二叉樹
- 每日一練(27):二叉樹的深度二叉樹
- 劍指Offer-40-二叉樹的深度二叉樹
- 劍指offer——二叉樹的深度C++二叉樹C++
- 《劍指offer》:[39]求解二叉樹的深度二叉樹
- Maximum Depth of Binary Tree 二叉樹的深度二叉樹
- Leedcode-二叉搜尋樹的最小絕對差
- [每日一題] 第八題:二叉樹的深度每日一題二叉樹
- [每日一題] 第三題:二叉樹的深度每日一題二叉樹
- 劍指offer | 55 - I. 二叉樹的深度二叉樹
- LeeCode-104. 二叉樹的最大深度二叉樹
- 洛谷 P4913 二叉樹深度二叉樹
- 資料結構實驗之二叉樹八:(中序後序)求二叉樹的深度資料結構二叉樹
- Python教程講解二叉樹的三種深度Python二叉樹
- LeetCode 104.二叉樹的最大深度LeetCode二叉樹
- 遞迴求解二叉樹任意一結點的深度遞迴二叉樹