zoukankan      html  css  js  c++  java
  • 二叉树的最小深度-深度优先-基于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))
    }
    
  • 相关阅读:
    分式函数的变换源
    分式之殇
    两条直线的位置关系
    数列专题思维导图
    数列通项公式思维导图
    函数与导数思维导图
    三角函数思维导图
    函数与初等函数思维导图
    集合思维导图
    npm包发布正式和测试版
  • 原文地址:https://www.cnblogs.com/pangqianjin/p/14631193.html
Copyright © 2011-2022 走看看