Ejemplo n.º 1
0
        public IList <string> RemoveSubfolders1(string[] folder)
        {
            /*
             * 问题:在给定的文件夹列表中,去掉子文件夹
             * 思路:
             *  1. 借用Trie树的构建思路,另外做特殊处理
             *  2. 将文件夹路径,按照"\"分隔,得到多个组成部分,把他们构造到Trie树当中
             *  3. 对于树中的每个节点,需要记录的是:
             *       3.1 节点存储的字符串
             *       3.2 当前节点,是否是文件夹的终点
             *       3.3 如果不是文件夹的终点,有多少子文件夹
             *  4. 先构建Trie树,然后使用回溯法遍历得到的结果,就是解
             *
             * 关键点:
             *
             * 时间复杂度:O(n)
             * 空间复杂度:O(n)
             */

            var treeTemp = new TreeManager();

            foreach (var folderItem in folder)
            {
                treeTemp.AddNode(folderItem);
            }

            return(treeTemp.ForReturn());
        }