二叉樹最小深度(遞迴版)

2022-07-02 16:00:13 字數 1113 閱讀 8361

題目:

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

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

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

示例:

給定二叉樹[3,9,20,null,null,15,7],

3

/ \9 20

/ \

15 7

返回它的最小深度  2.

分析:

我最初的思路是遞迴所有節點,節點不為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,另乙個非空。二叉樹其實就是遞迴遍歷的思想,首先想遞迴...