objective-c - Objective C 递归问题?

标签 objective-c ios recursion binary-search-tree

我正在对自定义编码的 BST 进行有序树遍历。这是代码

-(void) inOrderTraversalToString : (NSString*) accumulateString : (Node*) ptrNode {
    if(ptrNode == nil) {
        return;
    } else {
        [inOrderTraversalToString : accumulateString : ptrNode.left];
        accumulateString += [[NSNumber : ptrNode.datum] stringValue];
        [inOrderTraversalToString : (NSString*) accumulateString, ptrNode.right];
    }
}

我在尝试编译时收到各种糟糕的错误消息。我知道这可能只是某个地方的错字,但一些同行评审会很好。 几天,我一直在为此苦苦思索。

谢谢。 -- 亚历克斯

最佳答案

您的代码远非合法的 Objective-C。 + 运算符没有为 NSString 定义(并且不允许重载)。 NSString 无论如何都不会与你的递归一起工作,因为它是不可变的。你必须使用 NSMutableString。您也没有正确调用或声明方法。

这是对正确版本的尝试:

- (void)inOrderTraversalToString:(NSMutableString *)accumulateString withNode:(Node *)node
{
  if(ptrNode == nil) return;

  [self inOrderTraversalToString:accumulatedString withNode:ptrNode.left];
  [accumulatedString appendString:[ptrNode.datum stringValue]];
  [self inOrderTraversalToString:accumulatedString withNode:ptrNode.right];
}

此代码假定 leftrightdatum 确实是您的 Node 类的属性,并且在调用此方法之前,accumulatedString 已被初始化为合理的值。

关于objective-c - Objective C 递归问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9305368/

相关文章:

iphone - 自定义UITableViewCell在[super dealloc]上崩溃

ios - curl -d 到 Alamofire

ios - 错误 : Argument passed to call that takes no arguments

javascript - 如何折叠多维数组

objective-c - 使用 dispatch_get_main_queue() 是否意味着我的代码将在主线程上?

ios - 如何编译vImage浮雕效果示例代码?

python - 递归 python 函数 - 无法计算边缘情况

JavaScript 递归 : Maximum call stack size exceeded

ios - 我如何从以编程方式创建的 UIImageView 继续

iphone - 将数据从 UItableviewController 传递到 ios 中的 UItableViewcell