采用指针的方式,没有使用较复杂的指针的指针,所以,在进行参数传递时,采用引用,这样对T1的操作,等同于对T的操作。可保证在T,这个局部变量在函数调用结束销毁时,使T1所指向的地址空间正确。
#include<iostream>
using namespace std;
#include <stdlib.h>
typedef struct BiNode
{
char data;
struct BiNode *lchild;
struct BiNode *rchild;
} *BiTree;
void CreateBiTree(BiTree &T) //采用c++中的引用,T为T1的引用,对T操作,相当于对T1操作。
{
char ch;
cin>>ch;
if ('#' == ch)
{
T = NULL;
return ;
}
else
{
T = (BiTree)malloc(sizeof(BiNode));
if (!T)
{
exit(0);
}
else
{
T->data = ch;
CreateBiTree( T->lchild );
CreateBiTree( T->rchild );
}
}
}
// 输出建树结果,其实为树的前序遍历
void print( BiTree T )
{
if( NULL == T )
{
cout << "遍历结束" << endl;
return ;
}
else
{
cout << T->data << endl;
print( T->lchild );
print( T->rchild );
}
}
int main()
{
BiTree T1 = NULL;
CreateBiTree(T1);
print( T1 );
system("pause");
return 0;
}