我必须通过将多个列表合并在一起来构建多路树。我试图找到一个有效的算法来做到这一点。
- 可以有相同的列表
- 列表元素不是唯一的。这些元素的路径是
- 树以空根元素
开头
列表包含不唯一的元素。每个元素的路径是一个键,
例如,使用列表:
- A-B-C-d-E
- A-B-C-B
- F-B-C-C
- A-E-F
- A-C-d
- A-B-C-d-E
可以构建以下树:
我实现的第一个算法通过创建根节点并逐个添加列表来构建树:
- 创建根节点
- 选择第一个列表
- 如果列表的第一个元素已经是根节点的子元素,请选择它。否则,将该元素作为子元素插入。
- 如果列表的下一个元素已经是之前选择或插入的子元素,请选择它。否则,将该元素作为子元素插入。
- 重复步骤4直到列表为空
- 选择下一个阵列并转到步骤3.如果没有其他列表,请停止。
醇>
我发现构建或合并树的大部分资源都是指二叉树。因此,我想知道在我的案例中是否有更好的算法来构建多路树?