关于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叉树~!~!~~~~~

------解决方案--------------------
#include <iostream>
#include <stdlib.h>
using namespace std;
typedef struct node
{
char data;
struct node *rchild,*lchild;
}node;
node *creattree(node *&root)//参数类型应为node *&,因为构建的树需要保存!
{
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 -> data;//输出数据域,lchild改为data
outtree(root-> lchild);
outtree(root-> rchild);
}
}

int main()
{
node *root;//原来的*head多余!
//head = (node*)malloc(sizeof(node));
root = (node*)malloc(sizeof(node));
//root-> lchild =root-> rchild = 0;//这句是多余的!
cout < < "please enter data of the tree: " < <endl;
root = creattree(root);
outtree(root);
return 1;
}

如对我说的 "参数类型应为node *&,因为构建的树需要保存! "有疑问的话,可以参考下贴:
http://community.****.net/Expert/topic/5528/5528213.xml?temp=.7316095
------解决方案--------------------
二叉树没有建成功
参数类型应为node *&,把指针传进去,按照你写的,返回时候root仍然是指向NULL,不信可以调试
同意LS的
------解决方案--------------------
函数的参数除了数组和引用都是不传递的

但是函数的返回了指针,虽然root变了(我认为变了,main中,root = creattree(root))
但是他的左右儿子没有接受返回值,所以大概root不为空,但没有左右儿子吧.

指针初值的处理在不同编译器上好象不大一样,建议在申请空间时将指针置空
------解决方案--------------------
先mark,改天看看
------解决方案--------------------