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,也可能有重复。
答案 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时,从数据中删除相应的密钥。