#include
#include
typedef struct Node
{
int data;
struct Node *lchild,*rchild;
}BiTree,*BiTNode;
void CreateBiTree(BiTNode* T)
{
int ch;
printf("输入子节点:");
scanf("%d",&ch);
if(ch == 0)
{
*T = NULL;
}
else
{
*T = (BiTree*)malloc(sizeof(BiTNode));
(*T)->data = ch;
CreateBiTree(&(*T)->lchild);
CreateBiTree(&(*T)->rchild);
}
}
void TraverseBiTree(BiTree *T)
{
if (T != NULL )
{
printf("%d ", T->data);
TraverseBiTree(T->lchild);
TraverseBiTree(T->rchild);
}
}
void main()
{
BiTNode T;
CreateBiTree(&T);
TraverseBiTree(T);
}
您好!该段代码为二叉树的建立赋值以及先序遍历。在void CreateBiTree(BiTNode* T)函数中,BiTNode为二叉树的指针类型别名,BiTNode* T 也就相当于 BiTree *(*T)。在此,我想询问一下,为什么要使用BiTNode* T ,而不是BiTNode T? 即 void CreateBiTree(BiTNode T),代码其余部分做相应的修改。