我正在努力将下面的 JS 递归函数转换为一个蹦床函数,以避免使用深节点最大化调用堆栈。
它从传入的初始根节点返回一个包含所有子节点的数组。注意,list 是一个 Map,用于查找当前节点的子节点以进行下一次递归迭代。
const getRootSet = (nodeId, list) => {
let results = [];
const node = list.get(nodeId);
if (node && node.children.size > 0) {
results.push(node.nodeId);
node.children.forEach((value, key) => {
results = results.concat(getRootSet(list.get(key).nodeId, list) );
});
}
if(node && node.children.size === 0)
{
//add last child node
results.push(node.nodeId);
}
return results;
}
如何设置蹦床结构以构建节点数组以在最后返回?
Sample data:
child, parent,
111111, 222222,
000000, 111111,
060270, 964240,
041342, 964240,
024367, 964240,
052643, 964240,
083020, 060270,
024367, 961758,
024367, 964264,
060270, 024367,
060270, 964240,
123456, 789100,
345678, 789100,