algorithm - 查找文件结构中最高的共同兄弟分支

标签 algorithm

我有一个具有文件结构的数组,我需要找到最高关系。我有一个返回树结构的脚本,我需要删除重复项。

此“路径”将被“/”分隔。

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 并报告它,而不是在目录出现时删除它们,我正在将要删除的结构存储在数组中。我需要返回不重复的数组,删除远程计算机上的相同目录

最佳答案

以下是实现这一目标的方法。创建一个假想根。将其标记为白色。

现在检查每个元素并从根开始填充它。例如'2/8/4/6'将创建一个路径root -> 2 -> 8 -> 4 -> 6。每个顶点都着色为白色,最后一个顶点着色为黑色。

如果你这样做,你会得到这样的树:

enter image description here 现在做DFS从根开始你会遇到黑色顶点。您的路径将是:

root -> 2
root -> 1
root -> 3 -> test

忽略 root,你就会得到你想要的。

关于algorithm - 查找文件结构中最高的共同兄弟分支,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35308125/

相关文章:

algorithm - "cracking the coding interview(fourth edition)": 4. 7 子树检查

c++ - 具有 k 个 1 位的最小 n 位整数 c 是两个 g、h 位设置为 1 的 n 位整数之和(动态规划)

c - 优化此代码以检查总和

algorithm - 如何在高维数据中高效寻找k近邻?

c++ - std::hash 算法和大小

java - 我如何在 J2ME 中拆分字符串?

algorithm - 半边数据结构delaunay三角剖分

algorithm - 检查所有给定的顶点是否都在路径上

algorithm - 2个字符串之间的差异

algorithm - 值作为颜色表示