64,683
社区成员
发帖
与我相关
我的任务
分享
[code=c]
[/code]
.....
void InitialBitTree(BitTree *& T)
{//初始化二叉树
int n;
cout<<"input n: \n";
cin>>n;
if(n==0)
T=NULL;
else
{
if(!(T=new BitTree))exit(-1);
T->e = n;
InitialBitTree(T->lchild) ;
InitialBitTree(T->rchild) ;
}
}
int main(){
BitTree * T=NULL;
InitialBitTree(T);
.....
//记住销毁二叉树,释放结点占用的内存
return 0;//
}
引用参数,采用引用传递,实参会接收形参的改变。
如果是C代码,由于只能值传递,只有使用二级指针。
C++ 二叉树:
.....
void InitialBitTree(BitTree ** T)
{//初始化二叉树
int n;
cout<<"input n: \n";
cin>>n;
if(n==0)
*T=NULL;
else
{
if(!(*T=new BitTree))exit(-1);
(*T)->e = n;
InitialBitTree(&(*T)->lchild) ;
InitialBitTree(&(*T)->rchild) ;
}
}
int main(){
BitTree * T=NULL;
InitialBitTree(&T);
.....
//记住销毁二叉树,释放结点占用的内存
return 0;//
}
typedef char ElemType;
//树结构
typedef struct tree
{
ElemType data;
struct tree * lchild;
struct tree * rchild;
unsigned int isOut; //专为后序遍历设置的,0为不需要被输出,1为需要被输出
}TreeNode,*Tree;
//创建树,以先序序列建立树
void CreateTree(Tree &t)//我说的指针引用在这
{
char ch;
scanf("%c",&ch);
if ( ch == '#' )
t = NULL;
else
{
t = (Tree)malloc(sizeof(TreeNode));
if ( !t )
{
printf("分配内存出错!");
return ;
}
t->data = ch;
CreateTree(t->lchild);
CreateTree(t->rchild);
}
}
//递归先序遍历
void PreOrder(Tree t)
{
if ( t )
{
printf("%c",t->data);
PreOrder(t->lchild);
PreOrder(t->rchild);
}
}
//我不懂的地方在于为什么在创建树时 使用了指针的引用,它很神奇,竟然在创建树的函数中不给返回值,而且,当我去掉&时,程序编译通过,执行会异常终止!