Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как ввести бинарное дерево через файл? и вывести также в файл?

Никита Белкин Ученик (150), на голосовании 1 год назад
Исходные данные поместить в файл input.dat
Результат вывести также в выходной файл output.dat


#include <iostream>
#include <queue>

using namespace std;

//функция определения узла бинарного дерева
struct Node {
int data;
int level;
Node* left;
Node* right;
};

//функция создания нового узла бинарного дерева
Node* newNode(int data, int level) {
Node* node = new Node;
node->data = data;
node->level = level;
node->left = NULL;
node->right = NULL;
return node;
}

//функция вывода бинарного дерева
void printTree(Node* root) {
if (root == NULL) {
return;
}
queue<Node*> q;
q.push(root);
int currentLevel = root->level;
while (!q.empty()) {
Node* node = q.front();
q.pop();
if (node->level != currentLevel) {
cout << endl;
currentLevel = node->level;
}
cout << node->data << " ";
if (node->left != NULL) {
q.push(node->left);
}
if (node->right != NULL) {
q.push(node->right);
}
}
}

int main() {
//создание бинарного дерева
Node* root = newNode(0, 0);
root->left = newNode(1, 1);
root->right = newNode(2, 1);
root->left->left = newNode(3, 2);
root->left->right = newNode(4, 2);
root->right->left = newNode(5, 2);
root->right->right = newNode(6, 2);

//вывод бинарного дерева
printTree(root);

cout << endl << endl;
}
Голосование за лучший ответ
Лайт Ягами Искусственный Интеллект (340488) 2 года назад
Для начала, придумать формат, в котором хранить это дерево. Так как хранить в файлах можно только последовательность байт, нужно придумать, как разветвлённое дерево преобразовать в линейную последовательность. К примеру, преобразовать в массив, где вместо указателей будут индексы элементов, такой массив удобно записать и прочитать. А потом при необходимости преобразовать обратно в дерево.
Похожие вопросы