Solución
solution.tsTypeScript
interface TreeNode {
id: number;
parentId: number | null;
name: string;
children: TreeNode[];
}
function buildTree(nodes: Omit<TreeNode, 'children'>[]): TreeNode[] {
const resp: TreeNode[] = [];
const nodesMap = new Map<number, TreeNode>();
nodes.forEach(node => {
nodesMap.set(node.id, {...node, children: []})
});
nodes.forEach(node => {
const current = nodesMap.get(node.id);
if(node.parentId === null){
resp.push(current)
} else {
const parent = nodesMap.get(node.parentId)
if(parent) {
parent.children.push(current)
}
}
})
return resp;
}
// No modificar: necesario para evaluar el resultado.
export { buildTree };0respuestas