使用递归解决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? 这对我来说似乎很奇怪,但是这种解决方案也可以工作。
有人可以解释为什么我们只返回array(arr)并且不向其显式添加节点值,这种解决方案仍然有效吗?
这就是让我感到困惑的地方。
if(root.children === null){
return arr;
}