Is it a Linearized Tree? (Breadth-first Edition)
Haskell, 44 bytes

f[n:k]=iterate f[k]!!n
f _=[]
g x=f[x]==[[]]


Defines a function g that takes a list and returns a boolean.
See it pass all test cases.

Explanation

This relies on the fact that depth-first and breadth-first linearizations produce the same arrays.
See Martin's answers for details; basically they both give the same arithmetical condition on the array.

The function f is given the input list wrapped in a singleton list.
It pops one number n off the list, then calls itself n times on the remaining list to process the children of the popped node (depth first).
Popping the empty list results in [], which I use as an error state.
The function g checks that the end result is [[]], the unique non-erroneous state with no unprocessed nodes.
If Haskell was weakly typed, I could just use 0 or something as the error state, and wouldn't have to wrap the input into another list.