二叉樹的最大深度和最小深度

晨夢~思雨發表於2020-12-15

 題目意思很好理解,下面看程式碼。

獲取二叉樹的最大深度和最小深度

//獲取最小深度
func minDepth(root *TreeNode) int {
    if root == nil {
        //最後返回0,所以結果要+1
        return 0
    }
    if root.Left == nil && root.Right == nil {
        return 1
    }

    //初始化最小值
    minD := math.MaxInt32

    //左子樹最小值
    if root.Left != nil {
        minD = min(minDepth(root.Left), minD)
    }
    //右子樹最小值
    if root.Right != nil {
        minD = min(minDepth(root.Right), minD)
    }

    return minD + 1
}

func min(x, y int) int {
    if x < y {
        return x
    }
    return y
}

//獲取最大深度
func maxDepth(root *TreeNode) int {
    if root == nil {
        //最後返回0,所以結果要+1
        return 0
    }
    return max(maxDepth(root.Left), maxDepth(root.Right)) + 1
}

func max(a, b int) int {
    if a > b {
        return a
    }
    return b
}


參考連結:https://leetcode-cn.com/problems/maximum-depth-of-binary-tree/solution/er-cha-shu-de-zui-da-shen-du-by-leetcode-solution/

相關文章