数据结构二叉树的c语言建立代码出错了,哪位大神能帮忙看下?如何都想不通呀 .

数据结构二叉树的c语言建立代码出错了,哪位大神能帮忙看下?怎么都想不通呀 ...
编译结果出错:
C:\Users\sophia\Desktop\bitree\bitree.c(13) : error C2065: 'P' : undeclared identifier
说我主程序里的P没有定义。。。。,可是我定义了呀 ,报错是从主程序的p = insert_leftnode(P,'D');开始的
主程序:
#include<stdio.h>
#include<stdlib.h>
#include"bitree.h"
void main()
{
bitreenode *root, *p, *pp;
bitree_init(&root);
p = insert_leftnode(root,'A');
p = insert_leftnode(p,'B');
p = insert_leftnode(P,'D');
p = insert_rightnode(P,'G');
p = insert_rightnode(root->leftchild,'C');
pp = p;
insert_leftnode(p,'E');
insert_leftnode(pp,'F');
}

头文件;
typedef char datatype;
typedef struct node
{
datatype data;
struct node *leftchild;
struct node *rightchild;
}bitreenode;

//初始化
void bitree_init(bitreenode **root)
{
*root = (bitreenode *)malloc(sizeof(bitreenode));
(*root)->leftchild = NULL;
(*root)->rightchild = NULL;
}

//插入左子树
bitreenode *insert_leftnode(bitreenode *curr,datatype x)
{
bitreenode *t,*s;
if(curr == NULL) return NULL;

t = curr->leftchild;
s = (bitreenode *)malloc(sizeof(bitreenode));
s->data = x;
s->leftchild = t;
curr->leftchild = s;

return curr->leftchild;
}

//插入右子树
bitreenode *insert_rightnode(bitreenode *curr,datatype x)
{
bitreenode *t,*s;
if(curr == NULL) return NULL;

t = curr->rightchild;
s = (bitreenode *)malloc(sizeof(bitreenode));
s->data = x;
s->rightchild = t;
curr->rightchild = s;

return curr->rightchild;
}

------解决思路----------------------
注意大小写。。。。p和P