題目:
給定乙個二叉樹,找出其最小深度。
最小深度是從根節點到最近葉子節點的最短路徑上的節點數量。
說明:葉子節點是指沒有子節點的節點。
示例:
給定二叉樹[3,9,20,null,null,15,7]
,
3返回它的最小深度 2./ \9 20
/ \
15 7
分析:
我最初的思路是遞迴所有節點,節點不為null則加1,然後return當前節點左子樹和右子樹中長度較小的那個,如果節點為null,則return上乙個節點遞迴時計算出的深度,但是這種想法存在著嚴重的缺陷。
當某個節點只有乙個子節點時,會導致程式返回當前節點的深度。但實際上當前節點並不是葉子節點,這就很氣了!為了修正這個bug,我採用如下的方案:
**:
/*** definition for a binary tree node.
* public class treenode
* } */
class
solution
return mindeep(root, 0);
}public
int mindeep(treenode root, int
sum)
if (root == null
)
if (root.left == null && root.right == null
)
return
math.min(mindeep(root.left, sum), mindeep(root.right, sum));
}}
也就是當某個節點只有乙個子節點時,為null的一側會返回乙個其他數值絕對無法超越的值(因為最終返回值為int),導致自己的深度被其他深度淘汰掉。
但是,這樣寫總覺得不太好,有一種很牽強的感覺,後來看了其他人的答案... ...日常覺得自己菜ing... ...
二叉樹最小深度
最小深度是從根節點到最近葉子節點的最短路徑上的節點數量。遞迴,若為空樹返回0 若左右子樹都為空,則返回 1 若左子樹為空,則返回右子樹的最小深度 1 若右子樹為空,則返回左子樹的最小深度 1 若左右子樹均不為空,則取左 右子樹最小深度的較小值,1 definition for a binary tr...
111 二叉樹的最小深度(遞迴)
1.問題描述 給定乙個二叉樹,找出其最小深度。最小深度是從根節點到最近葉子節點的最短路徑上的節點數量。說明 葉子節點是指沒有子節點的節點。示例 給定二叉樹 3,9,20,null,null,15,7 3 9 20 15 7 返回它的最小深度 2.2.思路分析 對於樹的很多操作我們都是可以使用遞迴來解...
二叉樹最大 最小深度
二叉樹求最大,最小深度是二叉樹很基本的問題,基本上就是簡單的遞迴問題!首先明確一下二叉樹深度的定義 從根節點到葉子節點的深度 二叉樹的節點無外乎三種狀態 1.左右子樹皆存在 2.為葉子節點,左右子樹皆為null 3.另外一種就是乙個子樹為null,另乙個非空。二叉樹其實就是遞迴遍歷的思想,首先想遞迴...