我有一个包含文件结构的数组,我需要找到最高的关系。我有一个返回树结构的脚本,我需要删除重复项。
这条路径'将由' /'。
分开var array = [
'2/7',
'2/6',
'2/8/4/6',
'1/3',
'1/4',
'1',
'1/5/1/4',
'2',
'3/test'
]
这应输出:
var return = [
'1',
'2',
'3/test'
]
我将如何执行此操作?
我正在扫描已删除目录的目录。让我们说我删除" 2",但我的监控脚本注意到整个分支已经消失:2,2 / 7,2 / 6,2 / 8/4/6和它报告它,而不是在它们来时删除dirs,我存储要在数组中删除的结构。我需要返回没有重复的数组删除远程机器上的相同目录
答案 0 :(得分:3)
所以这是你如何实现这一目标的。创建一个虚构的根。将其标记为白色。
现在浏览每个元素并从根目录填充它。例如,'2/8/4/6'
将创建路径root -> 2 -> 8 -> 4 -> 6
。每个顶点都是白色,最后一个是黑色。
如果你这样做,你会得到这样的树:
现在从root进行DFS你会遇到黑色顶点。您的路径将是:
root -> 2
root -> 1
root -> 3 -> test
忽略根,你得到你想要的东西。
答案 1 :(得分:1)
您可以使用特里数据结构来查找唯一的前缀。现在,trie使用了大量内存,因此您可能需要对其进行调整。
/
我没有详细说明处理/
分隔符。你必须仔细考虑它。