N-ary Tree Postorder Traversal с использованием рекурсии - PullRequest
0 голосов
/ 01 июня 2019

Работая над проблемой обхода n-арного дерева с помощью рекурсии, я столкнулся с некоторыми трудностями при понимании части чьего-то решения.

В основном это мой вопрос.

if(root === null){
    return [];
}

let arr = [];
traverse(root);

function traverse(root){
    if(root.children === null){
        arr.push(root.val);
        return;
    }
    for(let i = 0; i < root.children.length; i++){
        traverse(root.children[i]);    
        console.log(arr);
    }

    arr.push(root.val);
}
return arr;

Для базового случая я проверяю, должны ли быть найдены дочерние элементы данного узла, и если нет, я добавляю их в массив. Что я не понимаю, так это то, что некоторые решения не используют push (), а просто возвращают arr? Это выглядит странно для меня, но в этом случае решение также работает.

Может кто-нибудь объяснить, как это возможно, что мы просто возвращаем массив (arr) и не добавляем к нему явно значение узла, это решение все еще работает?

Обновление

Вот что меня смущает.

if(root.children === null){
    return arr;
}
...