Basically the way I understand it is, left is a function of the node object. Much like get() is a function of cin. However the arrow is used because node actually represents the address where the memory that was allocated to it starts.
*node represents the actual information stored there so (*node).left(); is the same thing as node->left;
I'm fairly new at C++ and could be wrong but I believe this is right.