假设我们有N棵树,有不同的大小和结构。找到所有树木中相似分支的最佳方法是什么?最终目标是找到所有相似的子树,并将它们从最长的相似分支(树级)分类到最短的分支。
问题的目的是在多个查询中找到类似的连接。如果我们将每个查询呈现为树,则联接会在每个级别中生成分支。而我正在尝试在所有查询中找到类似的连接。
答案 0 :(得分:1)
首先从表名到(树,树中的位置)列表构建地图。在构建它时,您可以找到两次引用相同表的位置。记下树节点的两个子节点都在哪里。
访问节点的两个孩子都离开的地方。从树中删除这些子项及其父项,并使用新表名替换它们,使用相同的表名,其中刚删除的两个表相同。在更新地图时,您将找到树中引用两次最大深度1的子树的位置。记下此编辑产生了树节点的两个子节点都离开的新位置的位置。
重复上一段以检测原始树中我们具有相同的最大深度2的子树的位置。
继续,直到您将所有树编辑为不存在。您现在已经找到了所有子树匹配,与最大深度的顺序相反。