构建二叉排序树(非递归)

来源:互联网 发布:linux c 开发环境 编辑:程序博客网 时间:2024/04/28 22:32

大意:构建一个简单的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;elseq->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;}


0 0
原创粉丝点击