Бинарное дерево. Проблема с выводом
Код запускается и работает, но вместо чисел, сохраненных в массиве, выводит шифр.Помогите найти ошибку
#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);
}
}