数据结构-树-已知二叉树按顺序结构进行存储,求编号分别为i,j结点的公共祖先

    技术2022-07-11  97

    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]; }
    Processed: 0.015, SQL: 9