题目描述
给定一个二叉树,找出其最小深度。
最小深度是从根节点到最近叶子节点的最短路径上的节点数量。
说明:叶子节点是指没有子节点的节点。
解题思路
- 分治法
- 分别求左右子树的最小深度,在进行比较,加一返回
- 踩坑:根节点左子树或右子树为空时不构成子树,不符合要求
代码实现
func minDepth(root *TreeNode) int {
if root == nil {
return 0
}
leftDepth := minDepth(root.Left)
rightDepth := minDepth(root.Right)
if leftDepth == 0 {
return rightDepth+1
}
if rightDepth == 0 {
return leftDepth+1
}
if leftDepth <rightDepth {
return leftDepth+1
}
return rightDepth+1
}