我知道每个节点的父级。它存储在平面unordered_map中。每个节点只是一个数字,其中零表示根。如何根据这些信息有效地创建树?

struct node {
    int id;
    unordered_set<node> children;
};

可能会发生某些节点根本没有连接到根的情况。那些分离的链可以忽略,并且不必成为结果树的一部分。

如果需要,请询问更多信息。

最佳答案

创建一个节点指针数组。

然后浏览 map ,将数组给定索引处的节点添加到其父级数组索引处的节点的children

然后索引为0的节点将成为树的根。

关于c++ - 如何从节点的父级列表构建树?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23844293/

10-10 23:22
查看更多