I am aware these are warnings and that the program can run which i have done but it seems like the root that it passes to print is sitting at the end on a NULL node and never goes into the print. Other times with minor changes I have got seg faults.
For starters is my root variable doing what it's suppose to. It holds the start of the tree right?
I feel like root is being changed and I can't print from it but then again I'm not really sure what's happening.

The first warning tells you that isNULL is a pointer yet you're using it like it's not. This suggests a bug wherein you forgot to dereference the pointer. You're also using strcmp() incorrectly; it returns a comparison result rather than a boolean, where 0 means equality:

if (strcmp(data, "NULL") == 0)
*isNULL = 1;
else
*isNULL = 0;

But since you're making a boolean test and also assigning to a boolean variable, you can eschew the if statement and do the assignment directly:

*isNULL = (strcmp(data, "NULL") == 0);

C is cool like that. :)

The next two warnings are telling you that you forgot to include stdlib.h and malloc() has no declaration. When a function has no declaration, C assumes that it's a function taking an unknown number of arguments and returning int.