Беда с указателями C ++ - PullRequest
       0

Беда с указателями C ++

1 голос
/ 25 февраля 2020

Ну, я пытался создать что-то вроде бинарного дерева поиска. И после некоторых итераций я создаю newnode, и у него есть указатель, который уже используется. Как решить эту проблему без занятий. Например, test, 9 1 7 5 21 22 27 25 20 10 Построить его в обратном порядке (последний - root, первый цент вершины)

Здесь код:

#include <bits/stdc++.h>

using namespace std;

const int N = 3000;
int n;
int a[N];

struct node {
    int v;
    node *left, *right;
};
vector<int> ans;
node qwe;

void add(node *root, int elem) {
    if (elem > root->v) {
        if (root->right != NULL) {
            add(root->right, elem);
        } else {
            node newnode{};
            newnode.v = elem;
            newnode.right = NULL;
            newnode.left = NULL;
            node *lsls;
            lsls = &newnode;
            root->right = lsls;
        }
    } else {
        if (root->left != NULL) {
            add(root->left, elem);
        } else {
            node newnode;
            newnode.v = elem;
            newnode.right = NULL;
            newnode.left = NULL;
            node *lsls;
            lsls = &newnode;
            root->left = lsls;
        }
    }
}

int main() {

    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);
    cin >> n;
    for (int i = 0; i < n; ++i) {
        cin >> a[i];
    }
    qwe.v = a[n - 1];
    qwe.left = NULL;
    qwe.right = NULL;
    node *pointer;
    pointer = &qwe;
    for (int i = n - 2; i > -1; --i) {
        add(pointer, a[i]);
    }
    pointer = &qwe;

    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...