The problem lies in the definition of your node structure:
typedef struct Node
{
int info;
struct node* left; struct node* right; }node;
There is no "struct node", but only a "struct Node" (uppercase). And hence is
left
a pointer to a yet undefined structure, which the compiler gladly accepts until you try to dereference it. So define left as "struct Node*" and everything will be fine.
Btw. you cannot define
left
as "node*" because the "node" has not yet been defined at that point.