初学者:关于建二叉树的有关问题

菜鸟求救:关于建二叉树的问题
以下是我建二叉树用的代码:(利用先序遍历建二叉树法)
#include<iostream.h>
#define TElemType char
typedef enum {ERROR=0,OK=1} Status;

typedef struct BiTNode
{
TElemType data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;

Status CrtBT_PreOdr(BiTree &T)//按先序遍历建二叉树
{
char ch;
cout<<"输入数据:"<<endl;
cin>>ch;
cout<<endl;
if(ch=' ')
T=NULL;
else
{
T=new(BiTNode);
T->data=ch;
T->lchild=T->rchild=NULL;
CrtBT_PreOdr(T->lchild);
CrtBT_PreOdr(T->rchild);
}
return OK;
}

void main()
{
BiTree T;
CrtBT_PreOdr(T);

}
这样执行没结果,不知错在哪,还有一个问题就是这样样递归下去,
是不是一个死循环呢,这种方法到底能否实现建立二叉树呢?
我是新手,望各位赐教!

------解决方案--------------------
路过。我对数据结构和算法一窍不通,一起学习一下。
没有结果的原因是这行写错了:
if(ch=' ') 
应该是
if(ch==' ')
------解决方案--------------------
其它几个小问题:
1. 不会有死循环,前提是不能用空格表示NULL。cin没法读入空格,建议LZ先随便用哪个字母代替
2. 本帖貌似应该在C++版
3. 应该用#include <iostream>
4. 这么写好一些:typedef char TElemType;


------解决方案--------------------
1楼说的是一个毛病
2楼说的 应该用#include <iostream>不对 lz写的没问题 可以像lz写的 如果写成#include <iostream> 
要加上 using namespace std;

你说你想要执行结果 可是你没有写输出运行结果的函数,当然就没有运行结果,按照你的代码,只是建立一个2叉数
你的递归是写的有问题,你应该给递归加上判断条件
------解决方案--------------------
C/C++ code
typedef char TElemType;
typedef enum {ERROR=0,OK=1} Status; 

typedef struct BiTNode 
{ 
TElemType data; 
struct BiTNode *lchild,*rchild; 
}BiTNode,*BiTree; 

Status CrtBT_PreOdr(BiTree &T)//按先序遍历建二叉树 
{ 
char ch; 
cout <<"输入数据:" <<endl; 
cin>> ch; 
cout <<endl; 
if(ch=='*')   //