给定一个二叉树,找出其最小深度。
最小深度是从根节点到叶子节点经过的最短路径上的节点数量。
如:
则返回3.
- 广度优先
func minDepth2(root *TreeNode)int{
if root==nil{//第一次进入时根节点的判断
return 0
}
root.deep = 1
var queue []*TreeNode
queue = append(queue, root)
for len(queue)>0{
node := queue[0] //取出第一个元素
queue = queue[1:] // 第一个元素出队
// 一找到叶子节点就返回
if node.left==nil && node.right==nil{
return node.deep
}
if node.left!=nil{
node.left.deep = node.deep+1
queue = append(queue,node.left)
}
if node.right!=nil{
node.right.deep = node.deep+1
queue = append(queue,node.right)
}
}
return 0// 错误情况
}