大意:构建一个简单的int型二叉排序树,并用中序遍历实现升序降序输出。
代码如下:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<iostream>
#include<algorithm>
#include<queue>
using namespace std;
typedef struct Node{
int data;
Node *l,*r;
}Node,*pre;
void travel(pre T)
{
if(T)
{
travel(T->l);
printf("%3d",T->data);
travel(T->r);
}
}
void travel1(pre T)
{
if(T)
{
travel1(T->r);
printf("%3d",T->data);
travel1(T->l);
}
}
void creat_tree(pre &T)
{
int n,e;
int flag;
printf("请输入节点数\n");
scanf("%d",&n);
printf("请输入%d个无序的数\n",n);
scanf("%d",&e);
T->data=e;
n--;
Node *p;
Node *q;
while(n--)
{
scanf("%d",&e);
p=T;
while(p)
{
if(e>p->data)
{
q=p;
p=p->r;
flag=0;
}
else if(e<p->data)
{
q=p;
p=p->l;
flag=1;
}
}
p=new Node;
p->data=e;
p->l=p->r=NULL;
if(flag)
q->l=p;
else
q->r=p;
}
}
int main()
{
pre T;
T=new Node;
T->l=T->r=NULL;
creat_tree(T);
travel(T); //升序
printf("\n");
travel1(T); //降序
return 0;
}