int found(Bstnode *p,int a, int b) //查找两个不同结点的最近公共祖先
{
Bstnode *q;
int i=0;
if(a==p->key||b==p->key) return i; //如果两个结点中有一个是根结点
else while(p!=NULL){ //则表明它们没有最近公共祖先
if(a>p->key&&b>p->key)
{
q=p;
p=p->rchild;
}
else if(akey&&bkey)
{
q=p;
p=p->lchild;}
else if(a==p->key||b==p->key) return(q->key);
else return(p->key);
}
}
1