二叉树的最小深度-广度优先-基于GO

给定一个二叉树,找出其最小深度。
最小深度是从根节点到叶子节点经过的最短路径上的节点数量。

如:

则返回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// 错误情况
}
posted @ 2021-04-08 11:41  pangqianjin  阅读(127)  评论(0编辑  收藏  举报