Я пытаюсь реализовать двоичное дерево в C++ и перевернуть его в корне-влево-вправо. После добавления всех узлов я получаю сбой в этой строке:Двоичное дерево в C++
cout << r->st->st->info << endl; //trying to print root->left->left->info
Моя функция RSD ничего не печатает. Кроме того, я был бы признателен за любые руководства по Visual Studio о том, как использовать отладчик. Спасибо.
#include<iostream>
using namespace std;
struct Nod{
int info;
Nod *st, *dr;
};
int read_tree(Nod *r)
{
int info;
cout << "Info: "; cin >> info;
if (info!=0)
{
r = new Nod;
r->info = info;
read_tree(r->st);
read_tree(r->dr);
}
else
return 0;
}
void RSD(Nod *r)
{
if (r != NULL)
{
cout << r->info << " ";
RSD(r->st);
RSD(r->dr);
}
}
int main()
{
Nod *r = NULL;
read_tree(r);
system("Pause");
cout << r->st->st->info << endl;
cout << r->dr->info;
RSD(r);
}
Какова ценность 'r' сразу после вызова read_tree(). Это NULL? – 2501
После того, как вызов 'read_tree()' завершен, откуда вы знаете, что есть как минимум 2 'st' (левый ребенок) и не менее 1' dr' (правый ребенок)? – CinCout