C/C++二叉排序树
来源:互联网 发布:国际淘宝什么意思 编辑:程序博客网 时间:2024/05/18 03:51
- #include<stdio.h>
- #include<stdlib.h>
- struct nodb
- {
- int data;
- struct nodb *lch,*rch;
- };
- struct nodb *root,*q,*p;
- void insert1(struct nodb *s);
- void creat()
- {
- struct nodb *s;
- int i,n,k;
- printf("n=?");
- scanf("%d",&n);
- for(i=1;i<n;i++)
- {
- printf("k%d=?",i);
- scanf("%d",&k);
- s=(struct nodb *)malloc(sizeof(struct nodb));
- s->data=k;s->lch=NULL;s->rch=NULL;
- insert1(s);
- }
- }
- void insert1(struct nodb *s)
- { //非递归插入
- struct nodb *p,*q;
- if(root==NULL)
- root=s;
- else
- {
- p=root;
- while(p!=NULL)
- {
- q=p;//当p向子数节点移动时,q记录p的双亲的位置
- if(s->data<p->data)
- p=p->lch;
- else
- p=p->rch;
- }
- if(s->data<q->data)
- q->lch=s;
- else
- q->rch=s;//当p为空时,q就是可插入的地方
- }
- }
- void print(struct nodb *t)
- {
- if(t!=NULL)
- {
- print(t->lch);
- printf("%6d",t->data);
- print(t->rch);
- }
- }
- void bstsrch(struct nodb*t,int k)
- {
- int flag;
- p=NULL;
- q=t;
- flag=0;
- while((q!=NULL)&&(flag==0))
- {
- if(q->data==k)
- {
- printf("发现 %5d",q->data);
- flag=1;
- }
- else if(k<q->data)
- {
- p=q;
- q=q->lch;
- }
- else
- {
- p=q;
- q=q->rch;
- }
- }
- if(flag==0)printf("没有发现节点");
- }
- void bstins(struct nodb *t,int k)
- {
- struct nodb *r;
- bstsrch(root,k);
- if(q==NULL)
- {
- r=(struct nodb*)malloc(sizeof(struct nodb));
- r->data=k;
- r->lch=NULL;
- r->rch=NULL;
- if(root==NULL)
- root=r;
- else if(k<p->data)
- p->lch=r;
- else
- p->rch=r;
- }
- }
- main()
- {
- int n;
- root=0;
- creat();
- print(root);
- printf("请出入关键值n=?");
- scanf("%d",&n);
- bstsrch(root,n);
- printf("/n");
- bstins(root,n);
- print(root);
- }
<script type="text/javascript"><!--google_ad_client = "pub-3555979289815451";google_ad_slot = "0437120238";google_ad_width = 468;google_ad_height = 60;//--></script><script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"></script>
- 二叉排序树(c++)
- 二叉排序树 c
- C/C++二叉排序树
- c/c++二叉排序树
- c版二叉排序树
- 二叉排序树的C代码
- 二叉排序树 C语言实现
- 二叉排序树 c (未完)
- C实现二叉排序树
- 二叉排序树C实现
- 二叉排序树及其C代码
- C语言实现二叉排序树
- 二叉排序树实现(C++)
- 二叉排序树的实现(C#)
- 从二叉排序树------浅谈C指针
- 创建二叉排序树C语言实现
- 二叉排序树节点删除(c++)
- 二叉排序树C语言实现一
- 多核中的并行前缀和计算
- cssFloat、styleFloat,currentStyle、document.defaultView.getComputedStyle
- 一步一步搭建免费的Silverlight 2开发环境
- C/C++双链表正排序
- 微软,您的.net为中国程序员带来了什么?
- C/C++二叉排序树
- .net(ADO.NET)数据库研究(1):部分主要类及类关系探秘
- C/C++线性顺序存储结构
- 被裁后,找工历程
- 关于JSP页面中的pageEncoding和contentType两种属性的区别
- 中文保存出现乱码
- strlen与sizeof的区别
- 理解Windows消息机制
- C/C++各种排序法