gpt4 book ai didi

ios - 如何让所有 CFTree Siblings 处于相同的深度?

转载 作者:行者123 更新时间:2023-11-29 10:51:24 25 4
gpt4 key购买 nike

我正在研究 CFTree。我需要让所有 sibling 都处于相同的深度,例如在下图中,我需要一个包含所有 8 个 CFTreeRef 的数组,位于第 3 个深度。我怎样才能得到它?

enter image description here

最佳答案

按照您的深度编号 - 即从 1 开始,而不是 0:

-(void)allNodesFromTree:(CFTreeRef)node currentDepth:(int)currDepth atDepth:(int)depth nodesFound:(NSMutableArray*)nodes
{
bool atTargetDepth = depth -1 == currDepth;

CFTreeRef curChild = CFTreeGetFirstChild(node);
for (; curChild; curChild = CFTreeGetNextSibling(curChild)) {

if(atTargetDepth) //stop recursion if target depth reached
{
[nodes addObject:(__bridge id)(curChild)];
}
else [self allNodesFromTree:curChild currentDepth:currDepth+1 atDepth:depth nodesFound:nodes];
}
}

为了让事情更简洁一些,你可以将它包装在一个辅助函数中:

-(NSMutableArray*)allNodesFromTree:(CFTreeRef)node atDepth:(int)depth 
{
NSMutableArray *nodesArray = [[NSMutableArray alloc]init];
[self allNodesFromTree:node currentDepth:0 atDepth:depth nodesFound:nodesArray];
return nodesArray;
}

然后你就可以打电话了

NSMutableArray *nodes = [self allNodesFromTree:root atDepth:3];

关于ios - 如何让所有 CFTree Siblings 处于相同的深度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20300630/

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