на
#include <iostream>
#include <string>
using namespace std;
struct Node {
int key;
string info;
Node* left = nullptr;
Node* right = nullptr;
Node(int k, const string& i) : key(k), info(i) {}
};
Node* insert(Node* root, int key, const string& info) {
if (!root) return new Node(key, info);
if (key < root->key) root->left = insert(root->left, key, info);
else root->right = insert(root->right, key, info);
return root;
}
void printNodeAttributes(Node* node) {
if (!node) return;
cout << "Ключ: " << node->key
<< ", Информация: " << node->info
<< ", Тип: " << ((node->left || node->right) ? 'П' : 'Л') << endl;
printNodeAttributes(node->left);
printNodeAttributes(node->right);
}
int main() {
Node* root = nullptr;
int n;
cout << "Введите количество узлов дерева: ";
cin >> n;
for (int i = 0; i < n; ++i) {
int key;
string info;
cout << "Введите ключ и информацию для узла " << i + 1 << ": ";
cin >> key >> info;
root = insert(root, key, info);
}
cout << "\nАтрибуты всех вершин дерева:\n";
printNodeAttributes(root);
return 0;
}
Каждый узел дерева должен содержать следующую информацию: ключевое поле (целое число), информационное поле, указатели на левого и правого потомков.
7. Описать процедуру, которая:
a) присваивает переменной b типа char значение:
К - если вершина - корень,
П - если вершина - промежуточная вершина,
Л - если вершина - лист;
b) распечатывает атрибуты всех вершин дерева
• без использования механизма классов (на основе типа данных «структура»)