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