给定一个二叉树,找出其最小深度。
最小深度是从根节点到最近叶子节点的最短路径上的节点数量。
说明: 叶子节点是指没有子节点的节点。
解题思路:
要从四个方面考虑是否继续递归
1、根节点为空
2、左孩子为空
3、右孩子为空
4、非叶子节点
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
def minDepth(root: TreeNode)->int:
if not root:
return 0
if not root.left:
return minDepth(root.right) + 1
if not root.right:
return minDepth(root.left) + 1
return min(minDepth(root.left), minDepth(root.right)) + 1
if __name__ == '__main__':
root1 = TreeNode(1)
node2 = TreeNode(2)
node3 = TreeNode(3)
node4 = TreeNode(4)
node5 = TreeNode(5)
node6 = TreeNode(6)
node7 = TreeNode(7)
node8 = TreeNode(8)
root1.left = node2
root1.right = node3
node2.left = node4
node2.right = node5
node4.left = node6
node4.right = node7
node6.left = node5
print(minDepth(root1))
欢迎关注我的微信公众号【从开发到算法】,会同步更新python、java、算法等相关内容!!!