我正在学习算法和数据结构并训练我正在尝试使用objective-c设计和实现二叉树。
到目前为止,我有以下课程:
main
- 供测试用Node
- 树的节点BinaryTree
- 对于与树相关的所有方法
BinaryTree
我实现的类中的第一个方法是insertNode:forRoot:
.
- (void)insertNodeByRef:(Node **)node forRoot:(Node **)root{
if (head == NULL) {
head = *node;
}
// Case 2 root is null so can assign the value of the node to it
if (root == NULL) {
root = node;
} else {
if (node.data > root.data) { // to the right
[self insertNode:node forRoot:root.right];
} else if (node.data < root.data) { //or to the left
[self insertNode:node forRoot:root.left];
}
}
}
类的接口Node
如下所示:
@interface Node : NSObject
@property(nonatomic, assign) int data;
@property(nonatomic, strong) Node * right;
@property(nonatomic, strong) Node * left;
@end
我的问题是,如果我将 Node 作为引用传递,我不知道如何访问 Node 类成员变量。每当我尝试访问节点属性(如数据,左或右)时,我都会收到以下错误消息:
Member reference base type 'Node *__autoreleasing *' is not a structure or union
所以我的问题是:如何访问这些属性(数据,左或右)并使用它们来存储 int 数据或对另一个节点的引用?
希望这是有道理的。谢谢!