我正在改写一个旧项目。由于神秘的原因(遗留公司数据库,不能改变),树形数据以一种特殊的方式存储在数据库中:每个节点都定义了两个属性:节点深度和最底层深度子节点列表。
我如何处理将其转换为常规树?我目前处于可以放置在树中的一组所有节点的级别,但我现在处于亏损状态。我想到的一件事是从最深层添加节点并上升到根节点,但这很多搞乱悬空节点和调整树的大小。
编辑:刚刚意识到我的方法将涉及检查较低级别节点的每个组合,以找到其子节点等于较高级别节点的节点。不。
答案 0 :(得分:0)
只需对节点进行深度排序,然后逐级插入节点。
只有一个根(深度为0或1,具体取决于您的输入),因此第一步很简单。
在通用步骤中,您需要将下一级别的每个节点分配给正确的父级。标准很简单:子节点的最底层子节点是父节点最底层子节点的子集。如果运行时间不是问题,则只需针对所有父节点检查每个子节点,直到找到匹配项。如果这太慢了,请添加评论,我会考虑更多; - )