求二叉樹最小深度和最大深度

2021-10-23 14:57:53 字數 1146 閱讀 9670

3.利用廣度優先搜尋求最小深度

總結在刷leetcode時,把二叉樹最小深度和最大深度搞混了,在這裡mark下

二叉樹(binary tree)是指樹中節點的度不大於2的有序樹,它是一種最簡單且最重要的樹

**如下(示例):

public int

maxdepth

(treenode root)

總體的思路就是求出根節點的左右子樹的深度,然後作比較,取最大的深度即可,在dfs時,對於每乙個非葉子節點,我們只需要分別計算其左右子樹的最小葉子節點深度。這樣就將乙個大問題轉化為了小問題,可以遞迴地解決該問題。

**如下(示例):

public int

mindepth

(treenode root)

與求最大深度不同點在於多了乙個if判斷,原因是什麼呢?在這裡舉個例子,比如有乙個二叉樹是這樣的,

該二叉樹只有左子樹,如果我們按照求最大深度的思路的話,對於1這個根節點,左子樹求出的深度l為1,右子樹求出的深度r為0,最後判斷得出r

**如下(示例):

*

public

class

treenode*}

*/public

class

queuenode

}class

solution

if(node.right!=null)

}return0;

}}

當我們找到乙個葉子節點時,直接返回這個葉子節點的深度。廣度優先搜尋的性質保證了最先搜尋到的葉子節點的深度一定最小

1.利用dfs求最大深度與最小深度的時間複雜度都為o(n),n是樹的節點數。空間複雜度o(h),h為樹的深度。

2.利用bfs求最小深度時間複雜度為o(n),其中 n 是樹的節點數。對每個節點訪問一次。空間複雜度:o(n),其中 n 是樹的節點數。空間複雜度主要取決於佇列的開銷,佇列中的元素個數不會超過樹的節點數。

二叉樹最大深度和最小深度

給定乙個二叉樹,找出其最大深度。二叉樹的深度為根節點到最遠葉子節點的距離。如果二叉樹為空,則深度為0 如果不為空,分別求左子樹的深度和右子樹的深度,去最大的再加1,因為根節點深度是1,要加進去。int maxdepth treenode root 給定乙個二叉樹,找出其最小深度。二叉樹的最小深度為根...

二叉樹 最大深度和最小深度

leetcode 二叉樹的最大深度 leetcode 二叉樹的最小深度 我們知道完全二叉樹,是可以根據節點數量進行計算出深度的,但是非完成二叉樹呢 他就不滿足了,樹結構體 public class treenode 二叉樹的深度為根節點到最遠葉子節點的最長路徑上的節點數。說明 葉子節點是指沒有子節點...

二叉樹的最大深度和最小深度

題目意思很好理解,下面看 獲取二叉樹的最大深度和最小深度 獲取最小深度 func mindepth root treenode int if root.left nil root.right nil 初始化最小值 mind math.maxint32 左子樹最小值 if root.left nil ...