给定二叉树,找到其最小深度。 最小深度是沿着从根节点到最近的叶节点的最短路径的节点数。
Input: [3,6]
Output: 2
首先还是想到104题查找深度,这个是查找最小深度,所以应该将max变成min
class Solution:
def minDepth(self, root: TreeNode) -> int:
if not root:
return 0
if not root.right and not root.left:
return 1
if not root.left:
return self.minDepth(root.right)+1
if not root.right:
return self.minDepth(root.left)+1
return min(self.minDepth(root.left),self.minDepth(root.right))+1
或者搞一个queue然后往后append最后返回depth
class Solution:
def minDepth(self, root: TreeNode) -> int:
if not root:
return 0
queue = [(root, 1)]
while queue:
node, depth = queue.pop(0)
if not node.left and not node.right:
return depth
if node.left:
queue.append((node.left, depth + 1))
if node.right:
queue.append((node.right, depth + 1))
我还是喜欢第一种方法