Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 构建没有重复值的k元树_Algorithm_Data Structures - Fatal编程技术网

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