Skip to content

BFS

var queue []*TreeNode

queue = append(queue, target)
var depth int
for len(queue) > 0 {
    size := len(queue)
    for i := 0; i < size; i++ {
        node := queue[0]
        queue = queue[1:]

        if depth == K {
            ans = append(ans, node.Val)
            continue
        }

        parent := data[node]

        if parent != nil && !visited[parent] {
            queue = append(queue, parent)
        }

        if node.Left != nil && !visited[node.Left] {
            queue = append(queue, node.Left)
        }

        if node.Right != nil && !visited[node.Right] {
            queue = append(queue, node.Right)
        }

        visited[node] = true
    }
    depth++
}