Я изучаю алгоритмы и структуры данных и тренируюсь. Я пытаюсь спроектировать и реализовать двоичное дерево с помощью objective-c.
До сих пор у меня были следующие классы:
-
main
- для тестирования -
Node
- 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 в качестве ссылки. Всякий раз, когда я пытаюсь получить доступ к свойствам node (например, данные, слева или справа), появляется следующее сообщение об ошибке:
Member reference base type 'Node *__autoreleasing *' is not a structure or union
Итак, мои вопросы: как я могу получить доступ к этим свойствам (данные, слева или справа) и использовать их для хранения либо данных int, либо ссылки на другой Node?
Надеюсь, что это имеет смысл. Спасибо!