#include <stdio.h>#include <malloc.h>#include <stdlib.h>#includeusing namespace std;#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2typedef int Status;typedef char TElemType;//二叉树的二叉链表存储表示typedef struct BiTNode{ TElemType data; struct BiTNode *lchild,*rchild; //左右孩子指针}BiTNode,*BiTree;Status CreateBiTree(BiTree &T){ //按先序次序输入二叉树中结点的值(一个字符),空格字符表示空树, //构造二叉树链表表示的二叉树T char ch; scanf("%c",&ch); if(ch==' ') T=NULL; else{ if(!(T=(BiTNode *)malloc(sizeof(BiTNode)))) exit(OVERFLOW); T->data =ch; //生成根结点 CreateBiTree(T->lchild ); //构造左子树 CreateBiTree(T->rchild ); //构造右子树 } return OK;}//CreateBiTreevoid PreOrderTraverse(BiTree T){ //先序遍历 if(T){ printf("%c ",T->data ); //输出结点 PreOrderTraverse(T->lchild ); PreOrderTraverse(T->rchild ); }}void InOrderTraverse(BiTree T){ //中序遍历 if(T){ InOrderTraverse(T->lchild ); printf("%c ",T->data ); InOrderTraverse(T->rchild ); }}void PostOrderTraverse(BiTree T){ //后序遍历 if(T){ PostOrderTraverse(T->lchild ); PostOrderTraverse(T->rchild ); printf("%c ",T->data ); }}//以缩进的形式输出二叉树void printbitree(BiTree T,int n){ int i; if(T==NULL)return; printbitree(T->rchild,n+1); for(i=1;i<n;i++)cout<<" "; cout<<"----"; cout<data<<endl; printbitree(T->lchild,n+1);}int main(){ BiTree T; CreateBiTree(T); printbitree(T,2); cout<<"前序遍历的序列为:"; PreOrderTraverse(T); cout<<"\n中序遍历的序列为:"; InOrderTraverse(T); cout<<"\n后序遍历的序列为:"; PostOrderTraverse(T); return 0;}依此代码添加一个中序的非递归算法