Как исправить рекурсивный обход дерева в прямом порядке на JavaScript

У меня есть функция для обхода бинарного дерева в прямом порядке, но она работает неправильно. Когда я тестирую её на дереве [1,2], получаю только [1] вместо полного результата.

function traversePreorder(node) {
    let result = [];
    if(node !== null){
        result.push(node.value);
        result = result.concat(traversePreorder(node.leftChild));
        result = result.concat(traversePreorder(node.rightChild));
    }
    return result;
}

Проблема в том, что функция возвращает только корневой элемент. Подскажите, как правильно собрать все элементы дерева в один массив при рекурсивном вызове? Я думаю проблема в том, что результаты рекурсивных вызовов никуда не сохраняются.

Ты точно правильно дерево создаешь? У меня была такая же проблема - дело было не в обходе, а в том что узел с двойкой вообще не добавился как дочерний. Проверь структуру перед вызовом - выведи node.leftChild и node.rightChild для корня. Скорее всего там null’ы. Код с concat’ами у тебя нормальный.

Ты проверял вывод в отладчике? Возможно, твои рекурсивные вызовы возвращают пустые массивы и concat ничего не добавляет. Также посмотри, действительно ли существует node.value, возможно, это node.data или node.val в твоей структуре. Как ты строишь дерево?