Leetcode: Minimum Depth of Binary Tree

leetcode.com

type QueueElement struct {
    node *TreeNode
    depth int
}

func maxDepth(root *TreeNode) int {
    queue := []QueueElement{ QueueElement{ root, 0 } }

    maxDepth := 0
    for len(queue) > 0 {
        elm := queue[0]
        queue = queue[1:]

        node := elm.node
        if node == nil {
            maxDepth = max(maxDepth, elm.depth)
            continue
        }

        queue = append(queue, QueueElement{ node.Left, elm.depth + 1 }, QueueElement{ node.Right, elm.depth + 1 })
    }

    return maxDepth
}