0

我需要将给定节点的所有后代节点和节点本身保存在一个数组中。但是这些节点必须是按自底向上的顺序,也就是在叶子之前,然后是内部节点,再回到节点参数。现在我采用了这种方法,但节点按自上而下而不是自下而上的顺序存储:

function operationsToInsert(node) {
   var operations = [node].reduce(operationsToInsertRec, []);
   return operations;
}

function operationsToInsertRec(operations, node) {
   operations.push("i(" + node.nodeName + ")");
   if(node.childNodes && node.childNodes.length) {
      [].reduce.call(node.childNodes, operationsToInsertRec, operations);
   }
   return operations;
}

例如,如果我有这棵树:

    node
   /    \
  a      c
  |      |  
  b      d

该方法必须返回这样的数组:[b, a, d, c, node][d, c, b, a, node](自下而上)。

谢谢!

4

0 回答 0