给定一个二叉树,找出其最小深度。
最小深度是从根节点到叶子节点经过的最短路径上的节点数量。
如:
则返回3.
package main
import (
"fmt"
"math"
)
type TreeNode struct{
val int
left *TreeNode
right *TreeNode
}
func minDepth(root *TreeNode)int{
if root==nil{//第一次进入时根节点的判断
return 0
}
if root.left==nil&&root.right==nil{
return 1
}
var min = math.MaxInt64
if root.left!=nil{
min = int(math.Min(float64(minDepth(root.left)),
float64(min)))
}
if root.right!=nil{
min = int(math.Min(float64(minDepth(root.right)),
float64(min)))
}
return min+1 // 1为当前节点的深度
}
func main(){
var node7 = TreeNode{7,nil,nil}
var node6 = TreeNode{6,&node7,nil}
var node5 = TreeNode{5,nil,nil}
var node4 = TreeNode{4,nil,nil}
var node3 = TreeNode{3,&node6, nil}
var node2 = TreeNode{2,&node4,&node5}
var node1 = TreeNode{7,&node2,&node3}
fmt.Println(minDepth(&node1))
}
原文:https://www.cnblogs.com/pangqianjin/p/14631193.html