Algorithm 构建没有重复值的k元树
假设我有两个值:Algorithm 构建没有重复值的k元树,algorithm,data-structures,Algorithm,Data Structures,假设我有两个值:x1和x2 给定一个根,如何使用k叉树构建x1和x2的所有组合 例如: #0 root / \ #1 x1 x2 | #2 x2 在级别#1我有初始元素,x1和x2 在#2级别,我有x2,进行组合x1x2,但没有x1,因为这将是一个重复的组合(x2x1,我们不关心这里的元素顺序) 如果我有两个以上的元素,树将继续运行,直到级别等于元素数减去1 我已经建立了初始的#1级别。但是,如何在不重复组合的情况下不断生成树呢?换句话说,如何以最有
x1
和x2
给定一个根,如何使用k叉树构建x1
和x2
的所有组合
例如:
#0 root
/ \
#1 x1 x2
|
#2 x2
在级别#1
我有初始元素,x1
和x2
在#2
级别,我有x2
,进行组合x1x2
,但没有x1
,因为这将是一个重复的组合(x2x1
,我们不关心这里的元素顺序)
如果我有两个以上的元素,树将继续运行,直到级别等于元素数减去1
我已经建立了初始的#1
级别。但是,如何在不重复组合的情况下不断生成树呢?换句话说,如何以最有效的方式验证是否应该将给定元素放在树上。有什么著名的算法吗
附加信息:PHP编辑:关于构建树的一些修改
我的想法是为n个元素创建一个n元树
(x1,x2,…,xn)
。设root为x0
,然后对于任何节点xi
(0)你想完成的任务是什么?列出一组元素的所有组合而不考虑顺序?你真的必须使用k元树吗?@justhalf是的,列出一组元素的所有组合而不考虑顺序。我不必使用树,但这是我想到的第一件事。然后我想你应该问这个问题相反,我认为树可能不是一个很好的解决方案。通常的解决方案是使用递归,如下所示:
root ---> x1 ---> x2 ---> x3
| ---> x3
root ---> x2 ---> x3
root ---> x3