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

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

如:

则返回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