关于二叉树遍历问题
#include<stdio.h>#include<stdlib.h>
typedef struct aa
{
char data;
struct aa *Lchild;
struct aa *Rchild;
}*BiTree,Bitaa;
void GreatBiTree(BiTree &T)
{//创建一棵二叉树
char ch;
scanf("%c",&ch);
if(ch=='#')
T=NULL;
else
{
T=(BiTree)malloc(sizeof(Bitaa));
T->data=ch;
GreatBiTree(T->Lchild);
GreatBiTree(T->Rchild);
}
}
void Visit(BiTree &T)
{
if(T->data!='#')
printf("%c",T->data);
}
void Preorder(BiTree &T)
{//先序遍历
if(T!=NULL)
{
Visit(T);
Preorder(T->Lchild);
Preorder(T->Rchild);
}
}
void Inorder(BiTree &T)
{//中序遍历
if(T)
{
Inorder(T->Lchild);
Visit(T);
Inorder(T->Rchild);
}
}
void Postorder(BiTree &T)
{//后序遍历
if(T)
{
Postorder(T->Lchild);
Postorder(T->Rchild);
Visit(T);
}
}
int PostBitreeDepth(BiTree &T)
{//后序遍历求二叉树的高度
int hl,hr,max;
if(T)
{
hl=PostBitreeDepth(T->Lchild);
hr=PostBitreeDepth(T->Rchild);
if(hl>=hr)
max=hl;
else
max=hr;
return max+1;
}
else
return 0;
}
int main()
{
BiTree H;
int h;
GreatBiTree(H);
printf("先序遍历:\n");
Preorder(H);
printf("\n");
printf("中序遍历:\n");
Inorder(H);
printf("\n");
printf("后序遍历:\n");
Postorder(H);
printf("\n");
printf("此二叉树的高度是:\n");
h=PostBitreeDepth(H);
printf("%d\n",h);
return 0;
}
这个程序运行没有错误,但是我有个疑惑,就是我在建立一些函数时,传进去的都是指针的地址,让我在主函数中调用这些函数时,传进去又是指针,但是如果我都加一个取地址符号,就会报错,为什么?求大神指导