C++编写二叉树求大神帮忙分析一下

求大神帮忙解释一下这两段代码,为什么R在主函数里声明就不行呢?
#include
using namespace std;
struct Tree_Node{
char data;
Tree_Node *Lchild,*Rchild;
};
Tree_Node *R;
void BiT_Create(Tree_Node * T){//前序遍历创建二叉树
char ch;
cin>>ch;
if(ch=='#')T=NULL;
else{
T=new Tree_Node;
T->data=ch;
BiT_Create(T->Lchild);
BiT_Create(T->Rchild);
}
}
int main(){
cout<<"请输入二叉树的值,空值用“#”代替,默认前序"< BiT_Create(R);
system("pause");
}这段是正确的
#include
using namespace std;
struct Tree_Node{
char data;
Tree_Node *Lchild,*Rchild;
};
//Tree_Node *R;
void BiT_Create(Tree_Node * T){//前序遍历创建二叉树
char ch;
cin>>ch;
if(ch=='#')T=NULL;
else{
T=new Tree_Node;
T->data=ch;
BiT_Create(T->Lchild);
BiT_Create(T->Rchild);
}
}
int main(){
Tree_Node *R;
cout<<"请输入二叉树的值,空值用“#”代替,默认前序"<<endl;
BiT_Create(R);
system("pause");
}
这段又不行啊?

http://blog.csdn.net/xiaolei09bupt/article/details/44828999