怎样写一个带参数的创建二叉树的函数

来源:百度知道 编辑:UC知道 时间:2024/06/23 20:22:55
发现很多示例函数都是无参的,不如下面的:
bitree * CreateBitree()
{
char ch;
bitree *b;
ch = getchar();

if(ch == '@') //表示该结点为空结点
{
b = NULL;
}
else
{
b = (bitree *)malloc(sizeof(bitree));
b->data = ch;
b->lchild = CreateBitree();
b->rchild = CreateBitree();
}

return b;
}

而我想写的是类似下面的带参数的创建函数:
void CreateBitree(bitree *root)
{
char ch;

ch = getchar();

if(ch == '@') //表示该结点为空结点
{
root = NULL;
}
else
{
root= (bitree *)malloc(sizeof(bitree));
root->data = ch;
CreateBitree(root->lchild);
CreateBitree(root->rchild);
}

return ;
}

写的时候发现写不好,还请大虾们多多指教

/*
实验二、树型结构的应用——二叉树的应用
一、实验目的
熟练运用二叉树的性质,二叉树的遍历方式以及递归程序的实质 。
二、实验内容
1、以递归方式按先序序列建立二叉树的二叉链表结构,再分别输出先序、中序、后序的遍历结果。
输入顺序为:AB?DF??G??C?E?H??
2、要求:学会写递归程序。
3、算法实现:
*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct TNode
{
char data;
struct TNode *LChild,*RChild;
}TNode; //树节点

/*
void CreatBiTree(TNode * & Root) //有参创建树
//递归的时候需要甬道这种格式:&((*root).rchild),故参数格式为:TNode * & Root;
{
char c;
c=getchar(); //读入数据
if(c==' ')
{
Root=NULL; //空指针
}
else
{
Root=(TNode*)malloc(sizeof(TNode));
Root->data=c;
//读入左子树
CreatBiTree(Root->LChild);
//读入右子树
CreatBiTree(Root->RChild);
}
return ;
}
*/
TNode * CreatBiTree()