0分求助,不知道哪里错了,测试数据都能过,用的二叉树做的
查看原帖
0分求助,不知道哪里错了,测试数据都能过,用的二叉树做的
943146
wlxsp楼主2023/3/14 17:36
#include <bits/stdc++.h>
using namespace std;

int n;
struct node{
    int data;
    int index;
    node *lc = nullptr;
    node *rc = nullptr;
};
vector<node>v;
queue<node>q;

node insert_tree(node n1,node n2){
    if(n1.data < n2.data){
        node n3 = n2;
        n3.lc = &n1;
        n3.rc = &n2;
        return n3;
    }
    else{
        node n3 = n1;
        n3.lc = &n1;
        n3.rc = &n2;
        return n3;
    }
}

int main() {
    cin >>n;
    for(int i = 1;i<=pow(2,n);i++){
        node n;
        cin >> n.data;
        n.index = i;
        q.push(n);
    }
    while(q.size() != 1){
        node n1,n2;
        n1 = q.front();
        q.pop();
        n2 = q.front();
        q.pop();
        q.push(insert_tree(n1,n2));
    }
    node n = q.front();
    node* n1 = n.lc;
    node* n2 = n.rc;
    if(n1->data < n2->data) cout << n1->index;
    else cout << n2->index;
}

2023/3/14 17:36
加载中...