3
self.children = defaultdict(Node)7
def add(self, path, i=0):9
self.children[path[i]].add(path, i + 1)11
def calc_hash(self, hashes, name="root"):12
for child_name, child in sorted(self.children.items()):13
self.hash += f"{child.calc_hash(hashes, child_name)}+"15
hashes[self.hash].append(self)16
return f"{name}({self.hash})"18
def to_list(self, lst, path=[]):19
for name, node in self.children.items():21
lst.append(path + [name])22
node.to_list(lst, path + [name])26
def deleteDuplicateFolder(self, paths: List[List[str]]) -> List[List[str]]:30
hash_to_nodes = defaultdict(list)31
root.calc_hash(hash_to_nodes)32
for nodes in hash_to_nodes.values():