1.算法思想 若i>j,则先求i的父结点i/2。若 i/2 = j,则说明结点i及结点j的公共父结点为i/2。若i/2 != j,则令i = i/2,并继续进行循环,直到出现i=j的情况。那么j>i的情况与之类似 2.实现代码 ①递归实现
ElementType Comm_Ancestor(SqTree T,int i,int j){
if(i==j){ //递归出口
return T[i];
}
else if(i>j){
i = i/2;
Comm_Ancestor(T,i,j);
}
else{
j = j/2;
Comm_Ancestor(T,i,j);
}
}
②非递归实现
ElementType Comm_Ancestor(SqTree T,int i,int j){
while(i!=j){
if(i>j)
i = i/2;
else
j = j/2;
}
return T[i];
}