Я узнаю о бинарных деревьях. Я смотрел на веб-сайте Стэнфорда: http://cslibrary.stanford.edu/110/BinaryTrees.html Существует проблема с практикой создания дерева путем вызова newNode() три раза и использования трех переменных указателя. Были указаны структура и newNode. Я пытался распечатать узлы.Узлы печати двоичного дерева C++
struct node {
int data;
struct node* left;
struct node* right;
} ;
/*
Helper function that allocates a new node
with the given data and NULL left and right pointers.
*/
struct node* newNode(int data) {
struct node* node = new(struct node);
node->data = data;
node->left = NULL;
node->right = NULL;
return(node);
};
// call newNode() three times
struct node* build123a() {
struct node* root = newNode(2);
struct node* lChild = newNode(1);
struct node* rChild = newNode(3);
root->left = lChild;
root->right= rChild;
return(root);
}
int main() {
struct node* test = build123a();
cout << "root: " << test->data << endl;
cout << "left: " << test->left << endl;
cout << "right: " << test->right << endl;
return 0;
}
Проблема в том, что это печатает только целое число в корне. Для левого и правого узлов он распечатывает адреса. Мое знание указателей все еще немного шаткое. Но не имеет значения, что я вернул только корень? newNode - это указатель на узел справа? Просто найдите простое исправление, чтобы распечатать левый и правый узлы.
Нарисуйте структуру на бумаге, с кругами, как узлы и указатели, как стрелки на другие узлы. – Surt