Перед проверкой, является ли индекс left нулевым, следует проверить, содержит ли размер массива left (по мере роста массива он выглядит так, как если бы он всегда включал left и right).Я думаю, что случай должен интерпретироваться так же, как если бы левый и правый были нулем.
Таким образом, код должен быть
if ((left > count) || ((tree[left] == null) && (tree[right] == null)))