使用以下条件创建树的最佳方法

时间:2015-12-29 13:48:01

标签: algorithm optimization data-structures tree

Expected tree for given array给定n个元素的数组,创建一个树,使从root到leaf的所有路径标签代表长度为' n'的数组元素的所有组合。 对于ex,如果array = {1,2,3},则树应该是这样的,从根到叶有6条路径,每条路径如下{{123},{132},{213},{231}, {312},{321}} 1< = n< = 10 ^ 9,也可能有重复。

1 个答案:

答案 0 :(得分:1)

由于列表可能包含重复项,因此您需要对其进行重复数据删除并保持计数。为了减少混乱,我们使用字母而不是数字。

现在,让我们说{a,a,b,b,b}是您的输入。

将其转换为看起来像{a:2,b:3}的数据结构(您可以使用地图或使用元组来完成此操作)

算法:

初始化:创建根节点

输入:data = {a:2,b:3}和节点

对于节点,创建k = size(data)children。

将数据中的每个键分配给每个新边(在本例中为a和b)。

对于每个子项,递归调用此函数并删除相应的边值。示例:对于与a对应的函数调用,您将传递data = {a:1,b:3},对于b,data = {a:2,b:3}

每当值变为0时,从数据中删除相应的密钥。