首页 > 解决方案 > 使用递归的 N 元树后序遍历

问题描述

使用递归处理 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;
}

标签: javascriptrecursiontreetraversal

解决方案


推荐阅读