// Напечатать дерево // Сверху печатается левое поддерево // Справа печатается правое поддерево enum state { ROOT, LEFT, RIGHT }; void print() { if (root != nullptr) print(root, "", ROOT); } void print(Node* node, std::string prefix, state last) { std::cout << prefix; if (last == ROOT) { } else if (last == LEFT) { std::cout << "|-- П: "; prefix.append(" "); } else { std::cout << "|-- Л: "; prefix.append("| "); } std::cout << node->name << " (Оценка: " << node->average_mark << ")" << std::endl; if (node->left == nullptr && node->right == nullptr) return; if (node->left != nullptr) print(node->left, prefix, RIGHT); else std::cout << prefix << "|-- Л: NULL" << std::endl; if (node->right != nullptr) print(node->right, prefix, LEFT); else std::cout << prefix << "|-- П: NULL" << std::endl; }