Работая над проблемой обхода 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;
}