111 二叉樹的最小深度(遞迴)

2021-10-05 03:47:24 字數 941 閱讀 6474

1. 問題描述:

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

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

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

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

3/ \

9  20

/  \

15   7

返回它的最小深度  2.

2. 思路分析:

① 對於樹的很多操作我們都是可以使用遞迴來解決的,對於這道題目來說,比較容易想到當遞迴到達葉子節點的時候來統計高度,這裡比較簡單的處理方法是使用無返回值的遞迴,可以宣告乙個全域性變數來統計歷史上的最小深度,每當遞迴到達了葉子節點就可以統計高度,實現的邏輯還是比較簡單的

② 除了使用沒有返回值的遞迴解決之外還可以使用有返回值的遞迴,在遞迴中依次比較當前節點的左右子樹的高度,取出較小高度的那個,需要注意一點的是需要判斷一下當前的左子樹是否為空或者是右子樹是否為空,假如某個子樹為空那麼直接遞迴非空子樹的那個高度即可,因為這個時候我需要求解的是當前節點的高度然後比較,假如左右子樹非空的時候才比較哪個高度更小

3. **如下:

無返回值的**:

class solution 

int res = integer.max_value;

private void dfs(treenode cur, int height)

dfs(cur.left, height + 1);

dfs(cur.right, height + 1);

}}

有返回值的**:

class solution 

}

111 二叉樹的最小深度

給定乙個二叉樹,找出其最小深度。最小深度是從根節點到最近葉節點的最短路徑的節點數量。解題思路 這題我想了很久。大概還是對遞迴不太熟悉吧。下面講解一下遞迴的思路 1.如果根節點是null,說明沒有深度。2.如果節點的左右兒子都不存在,說明只有自己,節點深度為1.3.如果節點沒有左兒子,但是有右兒子怎麼...

111 二叉樹的最小深度( )

給定乙個二叉樹,找出其最小深度。最小深度是從根節點到最近葉子節點的最短路徑上的節點數量。說明 葉子節點是指沒有子節點的節點。示例 給定二叉樹 3,9,20,null,null,15,7 3 920 157返回它的最小深度 2.注意 它是到最近的葉子節點,要多考慮根節點 class solution ...

111 二叉樹的最小深度

給定乙個二叉樹,找出其最小深度。最小深度是從根節點到最近葉子節點的最短路徑上的節點數量。說明 葉子節點是指沒有子節點的節點。示例 給定二叉樹 3,9,20,null,null,15,7 3 9 20 15 7返回它的最小深度 2.思路 求樹深用dfs,遞迴遍歷左子樹右子樹,取最小的深度。defini...