gpt4 book ai didi

objective-c - 递归删除树目录结构中的空项

转载 作者:行者123 更新时间:2023-12-03 17:53:30 26 4
gpt4 key购买 nike

我使用 NSTreeNode 创建了文件和文件夹的目录树结构我在 NSOutlineView 中显示它。我的问题是某些文件夹是空的,我想删除这些文件夹的显示。我尝试递归地迭代树结构的每个元素以删除元素,但构建一棵树显然比拆除它容易得多。我的迭代从根开始,然后迭代每个节点的子节点,直到到达树的顶部。但是,由于某些文件夹可能包含多个空和非空文件夹,因此很难有效删除我不确定是否为空的元素。仅仅因为一个文件夹仅包含另一个文件夹并不意味着我可以将其删除,因为子文件夹可能为空或包含文件。

我认为我需要找到树的顶部元素/目录,然后通过所有父级子节点向后迭代到我的根节点,并检查每个文件夹是否为空。如果文件夹为空或仅包含我当前所在的文件夹,请删除该文件夹和父文件夹,依此类推,直到到达根目录。

但是,我无法让它发挥作用。有人有办法找到定义树顶部的元素吗?或者有没有一个好的方法来排序/删除 NSTreeNode 结构中的空元素?

我很感谢我能得到的所有帮助。谢谢。干杯,特隆德

最佳答案

伪代码:

BOOL removeTheChildless(NSTreeNode *tree)
{
for each NSTreeNode *child
{
if ( removeTheChildless(child) )
removeChild child from tree
}

return tree.isLeaf;
}

“foreach”可以基于mutableChildNodes。 HTH。

关于objective-c - 递归删除树目录结构中的空项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17928405/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com