二叉树的创建和遍历问题
#include <stdio.h>#include <stdlib.h>
typedef char Elemtype;
typedef struct BiTNode
{
Elemtype data;
struct BiTNode *rchild,*lchild;
}BiTNode,*BiTree;
void CreateBiTree(BiTree T)
{
char c;
scanf("%c",&c);
if(c==' ')
{
T=NULL;
}else{
T=(BiTree )malloc(sizeof(BiTNode));
T->data=c;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
}
void visit(char c,int level)
{
printf("%c 位于第 %d 层。\n",c,level);
}
void PreOrderTraverse(BiTree T,int level)
{
if(T)
{
visit(T->data,level);
PreOrderTraverse(T->lchild,level+1);
PreOrderTraverse(T->rchild,level+1);
}
}
int main()
{
int level=1;
BiTree T=NULL;
CreateBiTree(T);
PreOrderTraverse(T,level);
return 0;
}
在创建和遍历二叉树那里,为什么把第一个函数的参数改成BiTree T就不行了呢? 这只是一份拷贝的值。他改变了,外面的不会也跟着变。 你是多恨星号啊,把星号基本都删了。 {:10_278:} 那要用二级指针
页:
[1]