从仅具有深度和最底层子信息的节点构建树

时间:2013-09-25 06:46:16

标签: algorithm data-structures language-agnostic tree

我正在改写一个旧项目。由于神秘的原因(遗留公司数据库,不能改变),树形数据以一种特殊的方式存储在数据库中:每个节点都定义了两个属性:节点深度和最底层深度子​​节点列表。

我如何处理将其转换为常规树?我目前处于可以放置在树中的一组所有节点的级别,但我现在处于亏损状态。我想到的一件事是从最深层添加节点并上升到根节点,但这很多搞乱悬空节点和调整树的大小。

编辑:刚刚意识到我的方法将涉及检查较低级别节点的每个组合,以找到其子节点等于较高级别节点的节点。不。

1 个答案:

答案 0 :(得分:0)

只需对节点进行深度排序,然后逐级插入节点。

只有一个根(深度为0或1,具体取决于您的输入),因此第一步很简单。

在通用步骤中,您需要将下一级别的每个节点分配给正确的父级。标准很简单:子节点的最底层子节点是父节点最底层子节点的子集。如果运行时间不是问题,则只需针对所有父节点检查每个子节点,直到找到匹配项。如果这太慢了,请添加评论,我会考虑更多; - )