怎么用递归建立二叉树????
#include "stdio.h"
#include "stdlib.h"
typedef char TElemType;
typedef struct BiTNode{
TElemType data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
int CreateBiTree(BiTNode *T);//利用递归遍历建立二叉树的存储结构
void PreOrder(BiTNode *T);//用先序遍历打印二叉树
int main()
{
BiTNode T;
CreateBiTree(&T);
PreOrder(&T);
return 1;
}
int CreateBiTree(BiTNode *T)
{
char ch;
scanf("%c",&ch);
if(ch==' ')T=NULL;
else{
if(!(T=(BiTNode *)malloc(sizeof(BiTNode))))return 0;
T->data =ch;
CreateBiTree(T->lchild );//形参是个指针,实参也是个指针,
CreateBiTree(T->rchild );
}
return 1;
}
void PreOrder(BiTNode *T)
{
if(T){
printf("%2c",T->data );
PreOrder(T->lchild );
PreOrder(T->rchild );
}
}
为何这样建立的二叉树的每个结点之间是独立的,CreateBiTree(T->lchild )的递归调用的参数有无问题??这里好象有一个实参是指针,形参也是指针,在被调用函数里对指针的修改并不能返回到调用函数