A-A+

已知一棵二叉树按顺序方式存储在数组A[n]中。设计算法 求出下标分别为i和j的两个结点的最近

2022-08-12 15:55:44 问答库 阅读 196 次

问题详情

已知一棵二叉树按顺序方式存储在数组A[n]中。设计算法,求出下标分别为i和j的两个结点的最近的公共祖先结点的值。


请帮忙给出正确答案和分析,谢谢!

参考答案

正确答案:void Ancestor(ElemType A[]int nint iint j)//二叉树顺序存储在数组A[n]中求下标分别为i和j的结点的最近公共祖先结点的值。{while(i!=j)if(i>j)i=i/2;//下标为i的结点的双亲结点的下标else j=j/2;//下标为J的结点的双亲结点的下标printf(“所查结点的最近公共祖先的下标是%d值是%d”iA[i]);//设元素类型整型}//Ancestor
此问题考查的知识点是二叉树顺序存储相应算法。该题是按完全二叉树的格式存储,利用完全二叉树双亲结点与子女结点编号间的关系,求下标为i和j的两结点的双亲,双亲的双亲,等等,直至找到最近的公共祖先。

考点:下标,结点