题目:利用二叉链表作为存储结构建立一棵二叉树,每个节点中存放一种水果名(例如apple、orange、banana等,并要求从键盘输入),节点数不少于五个。要求分别以先序、中序和后序进行遍历,输出遍历结果。并编写一递归算法,交换该二叉树所有节点的左右孩子。
我的程序:
#include<iostream>
using namespace std;
struct BiTree
{
char data;
struct BiTree* lchild, *rchild;
};
BiTree* Create()
{
BiTree* T;
T = (BiTree*)malloc(sizeof(BiTree));
cin >> T->data;
if (T->data != '0')
{
T->lchild = Create();
T->rchild = Create();
return T;
}
else
return NULL;
}
void PreOrder(BiTree* root)
{
if (root == NULL)
return;
cout << root->data;
PreOrder(root->lchild);
PreOrder(root->rchild);
}
void InOrder(BiTree* root)
{
if (root == NULL)
return;
InOrder(root->lchild);
cout << root->data;
InOrder(root->rchild);
}
void PostOrder(BiTree* root)
{
if (root == NULL)
return;
PostOrder(root->lchild);
PostOrder(root->rchild);
cout << root->data;
}
BiTree* Exchange(BiTree *T)
{
BiTree* p;
p = (BiTree*)malloc(sizeof(BiTree));
p = T->rchild;
T->rchild = T->lchild;
T->lchild = p;
if (T->lchild != NULL)
{
T->lchild = Exchange(T->lchild);
}
if (T->rchild != NULL)
{
T->rchild = Exchange(T->rchild);
}
return T;
}
void main()
{
cout << "请输入水果名:";
BiTree* T = Create();
cout << endl << "先序遍历结果为:";
PreOrder(T);
cout << endl << "中序遍历的结果为:";
InOrder(T);
cout << endl << "后序遍历的结果为:";
PostOrder(T);
BiTree* P = Exchange(T);
cout << endl << "交换后先序遍历结果为:";
PreOrder(P);
cout << endl << "交换后中序遍历结果为:";
InOrder(P);
cout << endl << "交换后后序遍历结果为:";
PostOrder(P);
}
请问那我该怎么改才会对呢