111.二叉树的最小深度

class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None

root1 = TreeNode(1)
root2 = TreeNode(2)
root1.left = root2
# 这道题也是递归的想法,遍历每个子树,跟上一题的方法一样
class Solution:
def minDepth(self, root: TreeNode) -> int:
return self.dfs(root)
def dfs(self,root):
# 首先判断根节点是否为None
if not root : return 0
# 分别求出左子树和右子树的最小路径
left = self.dfs(root.left)
right = self.dfs(root.right)
# 注意这里一定要加判断的原因
# 是因为,当左节点或者右节点为空的时候不能算在路径里边
if left == 0 and right != 0:
return right + 1
elif left != 0 and right == 0:
return left + 1
# 返回左子树和右子树中最小的路径,当然,还要加上根节点。
return min(left,right) + 1
a = Solution()
print(a.minDepth(root1))

你可能感兴趣的:(111.二叉树的最小深度)