111 二叉樹的最小深度

2021-09-20 21:15:39 字數 1699 閱讀 8289

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

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

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

# definition for a binary tree node.

# class treenode:

# def __init__(self, x):

# self.val = x

# self.left = none

# self.right = none

class

solution

:def

mindepth

(self, root: treenode)

->

int:

ifnot root:

return

0

result =

list()

self.recur(root,

1, result)

return

min(result)

defrecur

(self, node, height, result):if

not node.left and

not node.right:

return

if node.left:

self.recur(node.left, height +

1, result)

if node.right:

self.recur(node.right, height +

1, result)

佇列當出隊的節點是葉子節點時,更新最小深度

廣度優先遍歷完後,返回最小深度

# definition for a binary tree node.

# class treenode:

# def __init__(self, x):

# self.val = x

# self.left = none

# self.right = none

class

solution

:def

mindepth

(self, root: treenode)

->

int:

ifnot root:

return

0

l =[(root,1)

] result =

float

('inf'

)while l:

node, h = l.pop(0)

ifnot node.left and

not node.right:

result =

min(result, h)

if node.left:

(node.left, h +1)

)if node.right:

(node.right, h +1)

)return result

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...