Бинарное дерево. Проблема с выводом

Код запускается и работает, но вместо чисел, сохраненных в массиве, выводит шифр.Помогите найти ошибку

#include <iostream>
#include <string>

using namespace std;

int value;




typedef struct Element {
    int value;
    string city;
    struct Element* left;
    struct Element* right;
}Element;

Element* create_element(int value);

void insert_element(Element* root, Element* elem);

void print_Element(Element* cur_elem);

int main() {/*
    setlocale(LC_ALL, "ru")*/;
    
    int a[7] = { 1,2,3,4,5,6,7 };
    Element* root = create_element(0);
    for (int i = 0; i < 7; i++) {
        Element* el = create_element(a[i]);
        insert_element(root, el);
    }
    
    cout << "my tree" << endl;
    print_Element(root);

    return 0;
     
}


Element* create_element(int value) {
    Element* elem = new Element;
    elem->value = 1;
    elem->left = NULL;
    elem->right = NULL;
    return elem;
}

void insert_element(Element* root, Element* elem) {
    
    if (elem->value < root->value) {// левое поддерево
        if (root->left == NULL) { // поддерево пустое
            root->left = elem;// вставкf
        }
        else { //рекурсия в лево
            insert_element(root->left, elem);
        }
    }
    else {
        if (root->right == NULL) { // поддерево пустое
            root->right = elem;// вставкf
        }
        else { //рекурсия в лево
            insert_element(root->right, elem);
        }
    }
}

void print_Element(Element* cur_elem) {
    if (cur_elem->left != NULL) {
        print_Element(cur_elem->left);
    }
    cout << cur_elem << endl;
    if (cur_elem->right != NULL) {
        print_Element(cur_elem->right);

    }
}

вывод: my tree 000001A23E6E9ED0 000001A23E6E7B20 000001A23E6E9C00 000001A23E6E9C80 000001A23E6E9930 000001A23E6E99B0 000001A23E6F11D0 000001A23E6F1250


Ответы (1 шт):

Автор решения: kojo tort
#include <iostream>
#include <string>

using namespace std;

typedef struct Element {
    int value;
    string city;
    struct Element* left;
    struct Element* right;
}Element;

Element* create_element(int value);

void insert_element(Element* root, Element* elem);

void print_Element(Element* cur_elem);

int main() {
    int a[7] = { 1,2,3,4,5,6,7 };
    Element* root = create_element(0);
    for (int i = 0; i < 7; i++) {
        Element* el = create_element(a[i]);
        insert_element(root, el);
    }

    cout << "my tree" << endl;
    print_Element(root);

    return 0;
}

Element* create_element(int value) {
    Element* elem = new Element;
    elem->value = value; // присваиваем передаваемое значение
    elem->left = NULL;
    elem->right = NULL;
    return elem;
}

void insert_element(Element* root, Element* elem) {
    if (elem->value < root->value) {// левое поддерево
        if (root->left == NULL) { // поддерево пустое
            root->left = elem;// вставка
        }
        else { //рекурсия в лево
            insert_element(root->left, elem);
        }
    }
    else {
        if (root->right == NULL) { // поддерево пустое
            root->right = elem;// вставка
        }
        else { //рекурсия в право
            insert_element(root->right, elem);
        }
    }
}

void print_Element(Element* cur_elem) {
    if (cur_elem->left != NULL) {
        print_Element(cur_elem->left);
    }
    cout << cur_elem->value << endl; // выводим значение элемента
    if (cur_elem->right != NULL) {
        print_Element(cur_elem->right);
    }

}
→ Ссылка