啊这,还有什么问题,全部WA???!
查看原帖
啊这,还有什么问题,全部WA???!
1043593
jh2023楼主2024/7/20 12:10

啊这,还有什么问题,全部WA???!

#include <bits/stdc++.h>
using namespace std;

void insert(int);
void rk(int);
static struct node {
    int data;
    int left, right;
} a[10005];

int n;
int cnt;
int nums[10005];
int root;
int ne = 1;
int len;
int main() {
    memset(a, 0, sizeof(a));
    memset(nums, 0, sizeof(nums));
    cin >> n;
    for (int i = 1; i <= n; i++) {
        int user;
        cin >> user;
        if (user == 5) {
            len = 0;
            int add;
            cin >> add;
            insert(add);
            rk(1);
        } else if (user == 1) {
            int num;
            cin >> num;
            int t = 0;
            for (int i = len; i >= 1; i--) {
                t++;
                if (nums[i] == num) {
                    cout << t << endl;
                    break;
                }
            }
            // cout << bst(1, num, 0) << endl;
        } else if (user == 2) {
            int r;
            cin >> r;
            int tt = 0;
            for (int i = len; i >= 1; i--) {
                tt++;
                if (tt == r) {
                    cout << nums[i] << endl;
                    break;
                }
            }
        } else if (user == 3) {
            int rr;
            cin >> rr;
            int ttt = 0;
            for (int i = len; i >= 1; i--) {
                ttt++;
                if (nums[i] == rr) {
                    if (nums[i - 1] == 0) {
                        cout << "−2147483647" << endl;
                        break;
                    }
                    cout << nums[i - 1] << endl;
                    break;
                }
            } 
        } else if (user == 4) {
            int rrr;
            cin >> rrr;
            int tttt = 0;
            for (int i = len; i >= 1; i--) {
                tttt++;
                if (nums[i] == rrr) {
                    if (nums[i + 1] == 0) {
                        cout << "2147483647" << endl;
                        break;
                    }
                    cout << nums[i + 1] << endl;
                    break;
                }
            }
        }
    }
    return 0;
}

void rk(int x) {
    if (x == 0) return;
    rk(a[x].left);
    nums[++len] = a[x].data;
    rk(a[x].right);
}

void insert(int value) {
    if (root == 0) {
        a[ne].data = value;
        a[ne].left = 0;
        a[ne].right = 0;
        root = ne;
        ne++;
        return;
    }
    int temp = root;
    while (true) {
        if (value < a[temp].data) {
            if (a[temp].left == 0) {
                a[ne].data = value;
                a[ne].left = 0;
                a[ne].right = 0;
                a[temp].left = ne;
                ne++;
                break;
            } else {
                temp = a[temp].left;
            }
        } else if (value > a[temp].data) {
            if (a[temp].right == 0) {
                a[ne].data = value;
                a[ne].left = 0;
                a[ne].right = 0;
                a[temp].right = ne;
                ne++;
                break;
            } else {
                temp = a[temp].right;
            }
        }
    }
}

大佬求调。。。

2024/7/20 12:10
加载中...