Я изучаю алгоритмы и структуры данных и тренируюсь. Я пытаюсь спроектировать и реализовать двоичное дерево с помощью 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?
Надеюсь, что это имеет смысл. Спасибо!