Javascript 使用递归的N元树后序遍历
在使用递归处理n元树遍历问题时,我遇到了一些困难,难以理解其他人的部分解决方案 基本上这是我的问题Javascript 使用递归的N元树后序遍历,javascript,recursion,tree,traversal,Javascript,Recursion,Tree,Traversal,在使用递归处理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 <
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;
return(函数遍历(acc,node){if(node){if(node.children)acc=node.children.reduce(遍历,acc);acc.push(node.val);}return acc;})([],root)代码>“我不明白的是,有些解决方案不使用push()而只返回arr?…有人能解释一下这是怎么可能的”很简单,你只需要。。。说真的,我们应该如何向您解释您没有显示的代码是如何工作的?“这就是我所做的,其他人做了一些不同的事情,如果他们的工作与我的不一样,为什么他们的工作?”root.children===null
将在没有更多子元素可遍历时到达-换句话说,这是结束对遍历
的递归调用并将结果传递回调用堆栈的检查。-该算法的奇怪之处在于,它不使用尾部调用递归,您还可以返回与递归结果相关的当前值。return(函数遍历(acc,node){if(node){if(node.children)acc=node.children.reduce(遍历,acc);acc.push(node.val);}return acc;}([],root)代码>“我不明白的是,有些解决方案不使用push()而只返回arr?…有人能解释一下这是怎么可能的”很简单,你只需要。。。说真的,我们应该如何向您解释您没有显示的代码是如何工作的?“这就是我所做的,其他人做了一些不同的事情,如果他们的工作与我的不一样,为什么他们的工作?”root.children===null
将在没有更多子元素可遍历时到达-换句话说,这是结束对遍历
的递归调用并将结果传递回调用堆栈的检查。-这个算法的奇怪之处在于,它不使用尾部调用递归,还可以返回与递归结果相关的当前值。
if(root.children === null){
return arr;
}