假定用两个一维数组L[n+1]和R[n+1]作为有n个结点的二叉树的存储结构,

2025-04-30 09:37:06
推荐回答(2个)
回答1:

int isGrandChild(int u, int v) //判断u是否为v的子孙
{
if (L[v] == u || R[v] == u) return 1; //1表示是,0表示否

if (L[v] == 0 && R[v] == 0) return 0;

return isGrandChild(u, L[v]) || isGrandChild(u, R[v]); //如果u是L[v]或者R[v]的子孙,那么u也是v的子孙

}

回答2:

#include
int Judge(int L[], int R[], int u, int v)
{
if (L[v]!=0 || R[v]!=0)
{
if (L[v]==u || R[v]==u)
return 1;

else
{
int a,b;
a=Judge( L, R, u, L[v]);
b=Judge( L, R, u, R[v]);

if (a==1 || b==1)
return 1;
}

}
else
return 0;
}

int main () {
int L[16]={0,2,4,6,8,10,12,14,0,0,0,0,0,0,0,0};
int R[16]={0,3,5,7,9,11,13,15,0,0,0,0,0,0,0,0};

int a = Judge(L,R,11,5);
printf("%d", a);
}