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