我正在对自定义编码的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];
    }
}


尝试编译此错误消息时,我收到各种可怕的错误消息。我知道这可能只是某个地方的错字,但是一些同行评审会很好。我已经为此搅拌了好几天。

谢谢。
   -亚历克斯

最佳答案

您的代码中的语法在几个地方看起来都错误。要使用多个参数,您需要扩展函数名称以为每个参数提供一个参数说明。您可能需要将其更改为如下所示:


  -(void)inOrderTraversalToString:(NSString *)accumulateString FromNode:(Node *)ptrNode


在函数主体中,您进行了错误的函数调用。函数调用应如下所示:


  [对象/类param_desc:(Param1Type)param1 param_desc:(Param2Type)param2 ...];


如果要调用静态类方法,请先使用类名进行调用,否则请使用要对其进行操作的对象名。因此,在您的代码中,第一个递归调用可能如下所示:


  [YourObjectOrClass inOrderTraversalToString:accumulateString FromNode:ptrNode.left];


您可能需要重新学习Objective C的基础知识。


http://cocoadevcentral.com/d/learn_objectivec/
https://developer.apple.com/library/mac/#referencelibrary/GettingStarted/Learning_Objective-C_A_Primer/_index.html

10-08 17:01