使用递归的N元树后序遍历

时间:2019-06-01 11:06:31

标签: 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 < 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;
}

0 个答案:

没有答案