
递归解决
package mainimport ("fmt")type TreeNode struct {Val intLeft *TreeNodeRight *TreeNode}var min = 1<<63 - 1func minDepth(root *TreeNode) int {if root == nil {return 0}dfs(root, 1) //深度递归return min}func dfs(node *TreeNode, depth int) {if node.Right == nil && node.Left == nil { //递归结束条件if depth < min {min = depth}return}if node.Left != nil { // 遍历左节点dfs(node.Left, depth+1)}if node.Right != nil { // 遍历右节点dfs(node.Right, depth+1)}}func main() {a := &TreeNode{Val: 3,}b := &TreeNode{Val: 9,}a.Left = bc := &TreeNode{Val: 20,}a.Right = cd := &TreeNode{Val: 15,}c.Left = de := &TreeNode{Val: 7,}c.Right = efmt.Println(minDepth(a))}
