编写算法在二叉排序树上找出任意两个不同节点的最近公共祖先

编写算法在二叉排序树上找出任意两个不同节点的最近公共祖先

ID:43353293

大小:56.50 KB

页数:3页

时间:2019-10-01

编写算法在二叉排序树上找出任意两个不同节点的最近公共祖先_第1页
编写算法在二叉排序树上找出任意两个不同节点的最近公共祖先_第2页
编写算法在二叉排序树上找出任意两个不同节点的最近公共祖先_第3页
资源描述:

《编写算法在二叉排序树上找出任意两个不同节点的最近公共祖先》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、源代码:#include"stdio.h"#include"stdlib.h"typedefstructnode{intdata;structnode*lchild,*rchild;}Bit;Bit*InBitree(Bit*S,Bit*T){//将数据插入一个二叉排序树中Bit*p;p=T;while(1){if(S->datadata&&p->lchild==NULL){p->lchild=S;break;}elseif(S->datadata&&p->lchild!=NULL)p=p->lchild;elseif(S

2、->data>p->data&&p->rchild==NULL){p->rchild=S;break;}elseif(S->data>p->data&&p->rchild!=NULL)p=p->rchild;}returnT;}Bit*SetBitree(){//创建一个二叉排序树Bit*T,*S;inta;T=NULL;printf("输入数据创建一个二叉排序树,以0结束!");scanf("%d",&a);while(a!=0){S=(Bit*)malloc(sizeof(Bit));S->data=a;S->lchild=S->

3、rchild=NULL;if(T==NULL)T=S;elseT=InBitree(S,T);scanf("%d",&a);}returnT;}Bit*SearchBitree(Bit*T,inta,intb){//查找两结点的最近公共祖先结点Bit*p,*q;p=q=T;while(p!=NULL){if(adata&&bdata){q=p;p=p->lchild;}elseif(a>p->data&&b>p->data){q=p;p=p->rchild;}elseif((adata&&b>p->data)

4、

5、(

6、a>p->data&&bdata))returnp;elseif(a==p->data

7、

8、b==p->data)returnq;}}voidmain(){Bit*T,*Q;intx1,x2;T=SetBitree();if(T==NULL)printf("二叉排序树创建失败,请从新创建!");else{printf("请输入两个结点:");scanf("%d%d",&x1,&x2);Q=SearchBitree(T,x1,x2);printf("结点%d与结点%d的最近公共祖先结点是%d!",x1,x2,Q->data

9、);}}

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。