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

上传人:简****9 文档编号:99562017 上传时间:2019-09-19 格式:DOC 页数:3 大小:56.50KB
返回 下载 相关 举报
编写算法在二叉排序树上找出任意两个不同节点的最近公共祖先_第1页
第1页 / 共3页
编写算法在二叉排序树上找出任意两个不同节点的最近公共祖先_第2页
第2页 / 共3页
编写算法在二叉排序树上找出任意两个不同节点的最近公共祖先_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《编写算法在二叉排序树上找出任意两个不同节点的最近公共祖先》由会员分享,可在线阅读,更多相关《编写算法在二叉排序树上找出任意两个不同节点的最近公共祖先(3页珍藏版)》请在金锄头文库上搜索。

1、源代码:#include stdio.h#include stdlib.htypedef struct nodeint data;struct node *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;else if(S-datadata&p-lchild!=NULL)p=p-lchild;else if(S-datap-data&p-rchild=NULL)p-rchild=S;brea

2、k;else if(S-datap-data&p-rchild!=NULL)p=p-rchild;return T;Bit *SetBitree() /创建一个二叉排序树Bit *T,*S;int a;T=NULL;printf(输入数据创建一个二叉排序树,以0结束!n);scanf(%d,&a);while(a!=0)S=(Bit *)malloc(sizeof(Bit);S-data=a;S-lchild=S-rchild=NULL;if(T=NULL)T=S;elseT=InBitree(S,T);scanf(%d,&a);return T;Bit *SearchBitree(Bit *

3、T,int a,int b) /查找两结点的最近公共祖先结点Bit *p,*q;p=q=T;while(p!=NULL)if(adata&bdata)q=p;p=p-lchild;else if(ap-data&bp-data)q=p;p=p-rchild;else if(adata&bp-data)|(ap-data&bdata) return p;else if(a=p-data|b=p-data) return q;void main()Bit *T,*Q;int x1,x2;T=SetBitree();if(T=NULL)printf(二叉排序树创建失败,请从新创建!n);else printf(请输入两个结点:n);scanf(%d%d,&x1,&x2);Q=SearchBitree(T,x1,x2);printf(结点%d与结点%d的最近公共祖先结点是%d!n,x1,x2,Q-data);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号