Я хочу сохранить числа в двоичном дереве, выйти с 0, затем вывести числа в порядке возрастания.Большинство ответов, которые я видел, были о поиске в дереве, и те немногие, которые освещали эту конкретную тему, использовали методы, которые я не понимал.Я считаю, что само дерево создано правильно, но функция вывода виновата.Где я ошибся?
#include <iostream>
#include <stdio.h>
using namespace std;
struct thing {
short num;
short howmany = 0;
thing* right;
thing* left;
};
void insert(thing* akt, short x) {
if (akt == NULL) {
akt = new thing;
akt->left = NULL;
akt->right = NULL;
akt->num = x;
akt->howmany++;
}
else if (akt->num == x) akt->howmany++;
else if (akt->num > x) return insert(akt->right, x);
else return insert(akt->left, x);
}
void output(thing* root) {
thing* akt;
do {
akt = root;
while(akt->left!=NULL) akt=akt->left;
if(akt->right!=NULL) return output(akt->right);
cout << akt->num << " " << akt->howmany << "times\n";
akt = NULL;
} while (root != NULL);
}
int main() {
thing* root = new thing;
short x;
cout << "number: ";
cin >> x;
do {
insert(root, x);
cout << "number: ";
cin >> x;
} while (x != 0);
cout << endl;
output(root);
return 0;
}