求二叉树后序遍历中的左右子树交换 C语言编程

求大神帮忙,二叉树先后序遍历输出,再左右子树交换输出,用c语言,急!!!

给你一段代码。C++写的,你可以自己稍微修改一下:
#include<iostream>
using namespace std;

#define OK 1
#define ERROR 0
#define OVERFLOW -1
typedef int Status ;
typedef char TElemType;

typedef struct TreeNode{ //定义的树结点
TElemType Data;
struct TreeNode *lchild,*rchild;
}TreeNode,*Treep;

Treep CreateTree(Treep &T) //使用先序遍历优势创建
{
char ch;
// cout<<"\n请你输入你要创建的树元素:";
cin>>ch;
if(ch == '#') //若是"#",代表该节点为空
T = NULL;
else
{
T = new TreeNode; //申请空间
if(!T)
return ERROR; //空间申请失败返回错误信息
T->Data = ch; //键盘输入结点信息
CreateTree(T->lchild); //递归调用创建左子树
CreateTree(T->rchild); //递归调用创建右子树
}
return T;
}

void TreeTreaverseF(Treep T) //二叉树先序遍历
{

if(T)
{
cout<<T->Data; //输出根节点值
TreeTreaverseF(T->lchild); //递归调用输出左子树
TreeTreaverseF(T->rchild); //递归调用输出右子树
}
}

void TreeTreaverseS(Treep T) //中序遍历二叉树
{
if(T)
{
TreeTreaverseS(T->lchild); //递归调用输出左子树
cout<<T->Data; //输出左节点
TreeTreaverseS(T->rchild); //递归调用输出右子树
}
}

void TreeTreaverseT(Treep T)
{
if(T)
{
TreeTreaverseT(T->lchild); //递归调用输出左子树
TreeTreaverseT(T->rchild); //递归调用输出右子树
cout<<T->Data; //输出右节点
}
}

int main()
{
Treep T=NULL;
cout<<"\n开始创建树状结构...\n";
cout<<"\n各元素以空格隔开\n";
CreateTree(T);

cout<<"\n先序遍历输出树...\n";
TreeTreaverseF(T);
cout<<endl<<endl;

cout<<"\n中序遍历输出树...\n";
TreeTreaverseS(T);
cout<<endl<<endl;

cout<<"\n后序遍历输出树...\n";
TreeTreaverseT(T);
cout<<endl<<endl;

return 0;
}
温馨提示:答案为网友推荐,仅供参考