我必须通过将多个列表合并在一起来构建多路树。我正在尝试找到一种有效的算法来做到这一点。
- 可以有相同的列表
- 列表元素不是唯一的。这些元素的路径是
- 树以空根元素开始
列表包含不唯一的元素。每个元素的路径是一个键,
例如,使用列表:
- ABCDE
- ABCB
- FBCC
- AEF
- ACD
- ABCDE
可以构建以下树:
我实现的第一个算法通过创建根节点并将列表一个接一个地添加到它来构建树:
- 创建根节点
- 选择第一个列表
- 如果列表的第一个元素已经是根节点的子节点,则选择它。否则,将该元素作为子元素插入。
- 如果列表的下一个元素已经是先前选择或插入的子元素,则选择它。否则,将该元素作为子元素插入。
- 重复步骤 4 直到列表为空
- 选择下一个数组并转到步骤 3。如果没有其他列表,则停止。
我发现用于构建或合并树的大部分资源都是指二叉树。因此,我想知道在我的情况下是否有更好的算法来构建多路树?