vs2019能运行pta不行 判断两二叉树是否等价

问题遇到的现象和发生背景

img


img

问题相关代码,请勿粘贴截图
#define  _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#define max 11
#define Null -1
typedef struct node tree;
struct node
{
    int last;
    int data;
    int left;
    int right;
};
//把第一个输入的二叉树储存为二叉树
int inserttree(tree T[], int A, int data) {
    if (T[0].last == 0) {
        T[0].data = data;
        T[A].last++;
        return A;
    }
    else if (A == Null) {
        A = T[0].last;
        T[A].data = data;
        T[0].last+=1;
        return A;
    }
    else if (data > T[A].data) {
        if (T[A].right == Null) {
            T[A].right = inserttree(T, T[A].right, data);
        }
        else {
            return inserttree(T, T[A].right, data);
        }
    }
    else if (data < T[A].data) {
        if (T[A].left == Null) {
            T[A].left = inserttree(T, T[A].left, data);
        }
        else {
            inserttree(T, T[A].left, data);
        }
    }
}
tree* initlist(int N,tree* T){
    T[0].last = 0;
    for (int i = 0; i < max; i++) {
        T[i].data = 0;
        T[i].left = Null;
        T[i].right = Null;
    }
    if (N) {
        for (;N>0;N--)
        {
            int data = 0;
            scanf("%d", &data);
             inserttree(T,0,data);
        }
    }
    return T;
}
int isomorphic(int R1, int R2, tree T1[], tree T2[]) {
    if (R1 == Null && R2 == Null) return 1;
    else if (R1 == Null && R2 != Null) return 0;
    else if (R1 != Null && R2 == Null)return 0;
    else if (T1[R1].data != T2[R2].data) return 0;
    else if (T1[R1].left == Null && T2[R2].right == Null)
        return isomorphic(T1[R1].right, T2[R2].left, T1, T2);
    else if (T1[R1].right == Null && T2[R2].left == Null) {
        return isomorphic(T1[R1].left, T2[R2].right, T1, T2);
    }
    //else if (T1[T1[R1].left].data != T2[T2[R2].left].data || T1[T1[R1].right].data != T2[T2[R2].right].data) {
    //    if (T1[T1[R1].right].data != T2[T2[R2].left].data)return 0;
    //    if (T1[T1[R1].left].data != T2[T2[R2].right].data)return 0;
    //}
    else {
        int tmp1 = isomorphic(T1[R1].left, T2[R2].left, T1, T2);
        int tmp2 = isomorphic(T1[R1].right, T2[R2].right, T1, T2);
        if (tmp1 == 1 && tmp2 == 1) return 1;
        else return 0;
    }
}

int main() {
    while (1) {
        int N = 0;
        int k = 0;
        tree T[max][max];
        scanf("%d", &N);
        if (N == 0)break;
        scanf("%d", &k);
        for (int i = 0; i <= k; i++) {
            initlist(N, T[i]);
        }
        for (int a = 1; a <= k; a++) {
            int ans = isomorphic(0, 0, T[0], T[a]);
            if (ans == 0)printf("no\n");
            else if (ans == 1)printf("yes\n");
        }
    }
    return 0;
}

运行结果及报错内容

img

我的解答思路和尝试过的方法

写完测试没问题,结果酱紫错,很难接受哇

我想要达到的结果