假设一棵树的存储结构采用双亲表示法,双亲指针数组为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;

}

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

 

 

上一篇:队列操作、栈操作


下一篇:Linux运维-红帽认证解析之Prometheus入门终极指南(一),别再说不会用Prometheus了(长文更新,速速关注)