其他分享
首页 > 其他分享> > 假设一棵树的存储结构采用双亲表示法,双亲指针数组为int parent[MaxSize],其中MaxSize表示双亲指针数组的最大结点个数。树中各个结点按先根遍历次序存放,根结点存于parent[0]

假设一棵树的存储结构采用双亲表示法,双亲指针数组为int parent[MaxSize],其中MaxSize表示双亲指针数组的最大结点个数。树中各个结点按先根遍历次序存放,根结点存于parent[0]

作者:互联网

.

假设一棵树的存储结构采用双亲表示法,双亲指针数组为int parent[MaxSize],

 

其中MaxSize表示双亲指针数组的最大结点个数。

树中各个结点按先根遍历次序存放,根结点存于parent[0]。

试编写一个函数,计算p所指结点和q所指结点的最近公共祖先结点。

【解答】

这是一个二重循环。外层循环从结点 p向双亲方向循环,每变动一个结点,即对从结点 q到根的路径上各结点进行检测,遇到外层循环当前标定的结点即终止。此结点即为所求。

int CommonAncestry ( int parent[ ], int MaxSize, int p, int q ) {

   int i, j;

   for ( i = p; i != -1; i = parent[i] )

  for ( j = q; j != -1; j = parent[j] )

 if ( i == j ) return i;

}

 

 

标签:结点,parent,int,MaxSize,双亲,指针
来源: https://blog.csdn.net/weixin_41290863/article/details/121707910