Asigne un puntero a una estructura que sea miembro de una estructura del mismo tipo a otro puntero a una estructura del mismo tipo

Esta pregunta suena muy confusa incluso para mí, y puede parecer obvia o ya respondida, pero he buscado mucho y, aunque encontré cosas interesantes, no encontré una respuesta exacta para mi pregunta. Aquí hay algunosC código que mostrará mucho mejor mi duda:

typedef struct Node_struct {
   char keyLine[100];
   int occurrences;
   struct Node* leftChild;
   struct Node* rightChild;
   struct Node* parent;
} Node;

typedef struct Tree_struct {
   Node* root;
} Tree;

int insertNode(Tree* myTree, Node* newNode) {
    ...
    Node* currentNode = myTree->root;
    ...
    if (caseSenCmpString(newNode->keyLine, currentNode->keyLine) == -1) {
        currentNode = (Node*)currentNode->leftChild;
    }
    ...
 }

¿Es correcto este código? Ya quecurrentNode es de tipoNode* ycurrentNode->leftChild es de tipostruct Node*, Tuve que lanzar(Node*)currentNode->leftChild para que pueda asignarse acurrentNode. Pero no estoy seguro de si esto es correcto, necesario o si hay una mejor manera de hacer lo mismo.

e manera similar, también tengo esto:

Node* coverNode = NULL;
...
coverNode->leftChild = (struct Node*)newNode;

Respuestas a la pregunta(2)

Su respuesta a la pregunta