根据节点属性构建树的算法

时间:2013-09-09 19:39:04

标签: algorithm

我正在尝试解决编程问题,我需要实现以下算法(粗略地):

有几个节点,即A,B,C等。

每个节点都可以包含多个项目,即a,b,c,x,y,z等。例如,

A [a, b, c, x, y, z]

B [a, b, c]

C [x, y, z]

可以有无限数量的节点和项目,节点可以包含任意数量的项目(但相同的项目不会再次重复)。

我需要做的是根据节点内的常见项目,我必须在节点之间创建层次结构。因此,在上面的例子中,A应该在B和C上具有更高的层次。或者换句话说,A是主,B和C是从属。

所以,我在考虑是否可以根据常用项目从节点创建树,然后对我来说会更容易。但我不知道使用哪种算法。谁知道哪个适合我的情况?构建树不是强制性的,如果有其他方法可以实现相同的功能,那就没关系。感谢。

2 个答案:

答案 0 :(得分:0)

尝试使用AVL trees

请注意,AVL树的最坏情况可能类似于this。您可以阅读有关最差情况here的更多信息。

最重要的是,给定两个“节点”的逻辑是比较它们并确定哪个存在更高?如果没有,那么首先需要建立!

一旦知道如何比较,就可以使用AVL树来构建和维护“层次结构”。

答案 1 :(得分:0)

我改编了由Ming-Syan Chen,Jong Soo Park和Philip S. Yu撰写的论文“网络环境中的路径遍历模式的数据挖掘”提出的算法。本文可用here。虽然这里的算法直接解决了我的问题,但我在算法中做了一点适应,以便它适合我的问题情况。现在它工作正常,我得到了我需要的结果。

我要感谢大家花时间阅读我的问题并提出解决方案。