# 请高手帮忙修改一下下面数据结构的代码（C语言版）解决思路

www.MyException.Cn  网友分享于：2013-04-24  浏览：15次

 输入p127二叉链表的定义
 录入调试p131算法6.4，实现二叉树的构造函数
 编写二叉树打印函数，可以通过递归算法将二叉树输出为广义表的形式，以方便观察树的结构。
#include<stdio.h>
#include <malloc.h>
typedef struct BiTNode
{
char data;
struct BiTNdoe *lchild,*rchild;
}BiTNode,*BiTree;

int CreateBiTree(BiTNode* T){
char ch;
scanf(&ch);
if(ch==' ') T=NULL;
else{
if(!(T=(BiTNode*)malloc(sizeof(BiTNode))))
return 0;
T->data=ch;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
return 1;
}
void DispBiTNode(BiTNode* T)
{
if (T!=NULL)
{
printf("%c",T->data);
if (T->lchild!=NULL || T->rchild!=NULL)
{
printf("(");
DispBiTNode(T->lchild); //递归处理左子树
if (T->rchild!=NULL) printf(",");
DispBiTNode(T->rchild); //递归处理右子树
printf(")");
}
}
}
void main()
{
BiTNdoe *T;
printf(" 构造一棵二叉树T:\n");
for(int i=0;i<15;i++)
CreateBiTree(T);
printf(" 广义表表示法:");
DispBiTNode(T);
printf("\n");
}

c:\users\hp\desktop\新建文件夹\树以广义表的形式输出.cpp(17) : error C2664: 'CreateBiTree' : cannot convert parameter 1 from 'struct BiTNdoe *' to 'struct BiTNode *'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
c:\users\hp\desktop\新建文件夹\树以广义表的形式输出.cpp(18) : error C2664: 'CreateBiTree' : cannot convert parameter 1 from 'struct BiTNdoe *' to 'struct BiTNode *'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
c:\users\hp\desktop\新建文件夹\树以广义表的形式输出.cpp(30) : error C2664: 'DispBiTNode' : cannot convert parameter 1 from 'struct BiTNdoe *' to 'struct BiTNode *'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
c:\users\hp\desktop\新建文件夹\树以广义表的形式输出.cpp(32) : error C2664: 'DispBiTNode' : cannot convert parameter 1 from 'struct BiTNdoe *' to 'struct BiTNode *'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
c:\users\hp\desktop\新建文件夹\树以广义表的形式输出.cpp(42) : error C2664: 'CreateBiTree' : cannot convert parameter 1 from 'struct BiTNdoe *' to 'struct BiTNode *'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
c:\users\hp\desktop\新建文件夹\树以广义表的形式输出.cpp(44) : error C2664: 'DispBiTNode' : cannot convert parameter 1 from 'struct BiTNdoe *' to 'struct BiTNode *'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast

------解决方案--------------------
C/C++ code
```#include<stdio.h>
#include <malloc.h>
typedef struct BiTNode
{
char data;
BiTNode *lchild,*rchild;//
}BiTNode,*BiTree;

int CreateBiTree(BiTNode* T){
char ch;
scanf(&ch);
if(ch==' ') T=NULL;
else{
if(!(T=(BiTNode*)malloc(sizeof(BiTNode))))
return 0;
T->data=ch;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
return 1;
}
void DispBiTNode(BiTNode* T)
{
if (T!=NULL)
{
printf("%c",T->data);
if (T->lchild!=NULL || T->rchild!=NULL)
{
printf("(");
DispBiTNode(T->lchild);     //递归处理左子树
if (T->rchild!=NULL) printf(",");
DispBiTNode(T->rchild);     //递归处理右子树
printf(")");
}
}
}
void main()
{
BiTNode *T;
printf(" 构造一棵二叉树T:\n");
for(int i=0;i<15;i++)
CreateBiTree(T);
printf(" 广义表表示法:");
DispBiTNode(T);
printf("\n");
}```