在多个树中查找类似的分支

时间:2017-03-10 20:22:30

标签: database algorithm data-structures tree graph-theory

假设我们有N棵树,有不同的大小和结构。找到所有树木中相似分支的最佳方法是什么?最终目标是找到所有相似的子树,并将它们从最长的相似分支(树级)分类到最短的分支。

enter image description here

问题的目的是在多个查询中找到类似的连接。如果我们将每个查询呈现为树,则联接会在每个级别中生成分支。而我正在尝试在所有查询中找到类似的连接。

1 个答案:

答案 0 :(得分:1)

首先从表名到(树,树中的位置)列表构建地图。在构建它时,您可以找到两次引用相同表的位置。记下树节点的两个子节点都在哪里。

访问节点的两个孩子都离开的地方。从树中删除这些子项及其父项,并使用新表名替换它们,使用相同的表名,其中刚删除的两个表相同。在更新地图时,您将找到树中引用两次最大深度1的子树的位置。记下此编辑产生了树节点的两个子节点都离开的新位置的位置。

重复上一段以检测原始树中我们具有相同的最大深度2的子树的位置。

继续,直到您将所有树编辑为不存在。您现在已经找到了所有子树匹配,与最大深度的顺序相反。