本文共 1265 字,大约阅读时间需要 4 分钟。
Time Limit: 1000 ms
Memory Limit: 256 mb 输入一系列整数,建立二叉排序树,并进行前序,中序,后序遍历。输入第一行包括一个整数n(1<=n<=100)。
接下来的一行包括n个整数。可能有多组测试数据,对于每组数据,将题目所给数据建立一个二叉排序树,并对二叉排序树进行前序、中序和后序遍历。
每种遍历结果输出一行。每行最后一个数据之后有一个空格。输入中可能有重复元素,但是输出的二叉树遍历序列中重复元素不用输出。
#includeusing namespace std;typedef struct node{ int data; struct node *leftchild,*rightchild;}*BitTree;//插入一个元素void InsertBitTree(BitTree &T,int x){ if(T==NULL){ T=new node; T->data = x; T->leftchild = NULL; T->rightchild = NULL; return; } if(x == T->data) return; else if(x data){ InsertBitTree(T->leftchild,x); }else InsertBitTree(T->rightchild,x);}//前序输出void PreOrderTraverse(BitTree T){ if(T!=NULL){ cout< data<<' '; PreOrderTraverse(T->leftchild); PreOrderTraverse(T->rightchild); }}//中序输出void InOrderTraverse(BitTree T){ if(T!=NULL){ InOrderTraverse(T->leftchild); cout< data<<' '; InOrderTraverse(T->rightchild); }}//后序输出void PostOrderTraverse(BitTree T){ if(T!=NULL){ PostOrderTraverse(T->leftchild); PostOrderTraverse(T->rightchild); cout< data<<' '; }}int main(){ int n,x; while (scanf("%d",&n)!=EOF){ BitTree T=NULL; for(int i=0;i
还有例题
转载地址:http://gpzsi.baihongyu.com/