二叉樹的最小 最大深度

2021-09-26 07:41:37 字數 1350 閱讀 6526

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

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

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

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

3
9 20

15 7

返回它的最小深度 2.

114:最大深度,同理;

bfs:按層搜尋,首次出現葉子節點的那一層層數就是最小深度,最後一層出現葉子節點的層數就是最大深度;

dfs:找到每個葉子節點的層數,可得到最小深度和最大深度;

分治:如果同時存在左子樹和右子樹則,最小深度等於左子樹和右子樹中最小深度的最小值 + 1,否則等於存在的分支的最小深度 + 1;最大深度則等於左子樹和右子樹最大深度的較大值 + 1;

1,bfs:

private

void

bfs(treenode node)

if(nodetemp.left !=

null

) queue.

offer

(nodetemp.left);if

(nodetemp.right !=

null

) queue.

offer

(nodetemp.right);}

}}

2 dfs:

private

void

dfs(treenode node ,int level)

//以下過濾條件在尋找最小深度時可以刪除注釋,能遮蔽一些不必要的分支,加快速度;最大深度不能有這個條件判斷;

// if(level >= min - 1)

if(node.left !=

null

)dfs

(node.left,level+1)

;if(node.right !=

null

)dfs

(node.right,level+1)

;}

分治:

最大深度:

class

solution

}

最小深度:

class

solution

if(root.left !=

null)if

(root.right !=

null

)return1;

}}//或者寫為以下**,但上面的**邏輯更為清晰;

class

solution

}

二叉樹最大 最小深度

二叉樹求最大,最小深度是二叉樹很基本的問題,基本上就是簡單的遞迴問題!首先明確一下二叉樹深度的定義 從根節點到葉子節點的深度 二叉樹的節點無外乎三種狀態 1.左右子樹皆存在 2.為葉子節點,左右子樹皆為null 3.另外一種就是乙個子樹為null,另乙個非空。二叉樹其實就是遞迴遍歷的思想,首先想遞迴...

二叉樹的最大最小深度

function maxdepth root else if root.left null root.right null else function mindepth root else if root.left null root.right null elseelse if root.righ...

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

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