/** * Definition for a binary tree node. * type TreeNode struct { * Val int * Left *TreeNode * Right *TreeNode * } */ func findBottomLeftValue(root *TreeNode) int { if root == nil { return -1 } queue := make([]*TreeNode, 0) queue = append(queue, root) for len(queue) != 0 { bl := queue[0].Val nextLV := make([]*TreeNode, 0) for len(queue) != 0 { head := queue[0] queue = queue[1:] if head.Left != nil { nextLV = append(nextLV, head.Left) } if head.Right != nil { nextLV = append(nextLV, head.Right) } } if len(nextLV) == 0 { return bl } queue = nextLV } return -1 }