if you remove the *asterisks will that just not output a hexadecimal number to the screen?
If getName() returns a char* then no, it won't output a hex number. That's because ostream has specific code for handling a char* - it assumes that it points to a C string and prints it. For any other type of pointer it will print the value of the pointer.
In LeafNode::LeafNode() you need to initialize previous also.
Since you're storing a raw C-string, you need to ask yourself "who owns the memory that it points to?" The answer should probably be "the leaf owns it." If that's true then you need to delete the memory when you destroy a leaf, and copy the memory if you ever make a copy of a leaf. And you should comment getName() to indicate that the pointer returned is valid as long as the Leaf node exists, and that the caller shouldn't change the memory pointed to.
Whew! That's a whole lot of housekeeping! And a lot of opportunity to get it wrong and introduce a bug. This is why we have std::string. If you use it instead then all these problems basically go away.
For example, LeafNode::LeafNode(char *name) is wrong: leafName = newchar(*name);
This creates a single new character, initializes it with the first character of name and points leafName to it. If you use C-strings, this should be: leafName = strdup(name);
and LeafNode::~LeafNode() should contain free(leafName);
and you should define a copy constructor and assignment operator, or declare them private so they won't be used.
Again, for all these reasons, you're much better off using std::string for the name.