一个2叉树的小疑点  会的指教一下  小弟感激不尽

一个2叉树的小问题  会的指教一下  小弟感激不尽
#include <iostream>
#include <stdlib.h>
using   namespace   std;
typedef   struct   node
{
char   data;
struct   node   *rchild,*lchild;
}node;
node   *creattree(node   *root)
{
char   ch;
cin> > ch;
if(ch   ==   ' ')
{
root   =   NULL;
return   root;
}
else
{
root   =   (node   *)malloc(sizeof(node));
root-> data   =   ch;
                creattree(root-> lchild);
        creattree(root-> rchild);
return   root;
}

}
void   outtree(node   *root)
{
if(root!=NULL)
{    
cout < <root   -> lchild;
outtree(root-> lchild);
        outtree(root-> rchild);
}
}

int   main()
{
node   *head,*root;
//head   =   (node*)malloc(sizeof(node));
root   =   (node*)malloc(sizeof(node));
//head-> lchild   =   root,head-> rchild   =   NULL;
root-> lchild   =root-> rchild     =   0;
cout < < "please   enter   data   of   the   tree: " < <endl;
           root   =   creattree(root);
outtree(root);
return   1;
}


问题描述:

不能打印出 建立的2叉树~!~!~~~~~

------解决方案--------------------
死循环 不停的在添加坐孩子
LZ可以跟踪进去仔细看看
------解决方案--------------------
node *creattree(node **root);

root = creattree(&root);
------解决方案--------------------
void outtree(node *root)
{
if(root!=NULL)
{
cout < <root -> lchild;//这句应该是root-> lchild-> data吧?
cout < <root-> rchild-> data;//这个你也没写.
outtree(root-> lchild);
outtree(root-> rchild);
}
}
------解决方案--------------------
node *creattree(node *root)
{
char ch;
cin> > ch;
if(ch == ' ')
{
root = NULL;
return root;
}
else
{
root = (node *)malloc(sizeof(node));
root-> data = ch;
creattree(root-> lchild);
creattree(root-> rchild);
return root;
}

}你这个递规每次都要一个 ' '才能返回,明显有问题么