给定一个二叉树,找出其最小深度。
最小深度是从根节点到最近叶子节点的最短路径上的节点数量。
说明: 叶子节点是指没有子节点的节点。
示例:
给定二叉树 [3,9,20,null,null,15,7],
3
/
9 20
/
15 7
返回它的最小深度 2.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
class Solution(object): def minDepth(self, root): """ :type root: TreeNode :rtype: int """ def getDepth(root, level): if not root: return if not root.left and not root.right: depth.append(level+1) getDepth(root.left, level+1) getDepth(root.right, level+1) depth = [] getDepth(root, 0) return 0 if not depth else min(depth)
|
1 2 3 4 5 6 7 8 9 10 11
| class Solution: def minDepth(self, root: TreeNode) -> int: if not root: return 0 left = self.minDepth(root.left) right = self.minDepth(root.right) if not left: return right + 1 if not right: return left + 1 return min(left, right) + 1
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| from collections import deque
class Solution: def minDepth(self, root: TreeNode) -> int: if not root: return 0 q, depth = deque(), 1 q.append((root, depth)) while q: node, depth = q.popleft() if not node: continue if not node.left and not node.right: break q.append((node.left, depth+1)) q.append((node.right, depth+1)) return depth
|