升序:中序序列,左中右
降序: 右中左
#include<iostream>
using namespace std;
typedef struct node
{
struct node *lchild;
struct node *rchild;
char data;
}BiTreeNode,*BiTree;
//先序建立二叉树(根左右)
void createBiTree(BiTree &T)
{
char c;
cin>>c;
if('#'==c)
{
T=NULL;
}
else
{
T=new BiTreeNode;
T->data=c;
createBiTree(T->lchild);
createBiTree(T->rchild);
}
}
//升序遍历二叉树
void midTraverse(BiTree T)
{
if(T)
{
midTraverse(T->lchild);
cout<<T->data<<" ";
midTraverse(T->rchild);
}
}
//降序遍历二叉树
void descTraverse(BiTree T)
{
if(T)
{
descTraverse(T->rchild);
cout<<T->data<<" ";
descTraverse(T->lchild);
}
}
int main()
{
cout<<"请输入字符串,以建立二叉树:";
BiTree T;
createBiTree(T);
cout<<"二叉树创建完成!"<<endl;
cout<<"升序遍历二叉树:"<<endl;
midTraverse(T);
cout<<endl;
cout<<"降序遍历二叉树:"<<endl;
descTraverse(T);
cout<<endl;
return 0;
}