bit = readbit();
if (bit) {
data = ...;
return new Node(data);
}
Node* node = new Node();
node->left = restore_tree(file);
node->right = restore_tree(file);
return node;
под наилучшим имею ввиду результат с наименьшим отклонением от цели,
наилучшим (допускается приближенное решение) образом