Академический Документы
Профессиональный Документы
Культура Документы
struct BusStop {
int stopNumber;
string stopName;
};
newNode->stopNumber = stopNumber;
newNode->stopName = stopName;
newNode->left = nullptr;
newNode->right = nullptr;
return newNode;
BusStop* inputNewNode() {
int stopNumber;
string stopName;
getline(cin, stopName);
return createNewNode(stopNumber, stopName);
if (root == nullptr) {
cout << "Новый узел успешно добавлен как корень дерева" << endl;
else {
while (!added) {
if (current->left == nullptr) {
current->left = newNode;
cout << "Новый узел успешно добавлен как левый потомок" << endl;
added = true;
else {
current = current->left;
if (current->right == nullptr) {
current->right = newNode;
cout << "Новый узел успешно добавлен как правый потомок" << endl;
added = true;
else {
current = current->right;
}
cout << "Ошибка: узел с номером " << newNode->stopNumber << " уже существует в
дереве" << endl;
added = true;
if (root != nullptr) {
printNode(root);
preOrderTraversal(root->left);
preOrderTraversal(root->right);
if (root != nullptr) {
postOrderTraversal(root->left);
postOrderTraversal(root->right);
printNode(root);
}
if (root != nullptr) {
inOrderTraversal(root->left);
printNode(root);
inOrderTraversal(root->right);
if (root != nullptr) {
printTree(root->left);
printNode(root);
printTree(root->right);
// информации об узлах
if (root == nullptr) {
return 0;
else {
if (root == nullptr) {
return nullptr;
if (root->stopNumber == stopNumber) {
return root;
if (leftResult != nullptr) {
return leftResult;
if (nodeToUpdate == nullptr) {
cout << "Узел с номером " << stopNumber << " не найден" << endl;
else {
string newStopName;
cin.ignore();
getline(cin, newStopName);
nodeToUpdate->stopName = newStopName;
cout << "Информация об узле с номером " << stopNumber << " успешно обновлена" << endl;
else {
node1->stopNumber = node2->stopNumber;
node2->stopNumber = tempStopNumber;
node1->stopName = node2->stopName;
node2->stopName = tempStopName;
cout << "Узлы с номерами " << stopNumber1 << " и " << stopNumber2 << " успешно поменялись
местами" << endl;
if (root == nullptr) {
return 0;
else {
return leftHeight + 1;
else {
return rightHeight + 1;
if (root != nullptr){
freeMemory(root->left);
freeMemory(root->right);
delete root;
int main() {
while (true) {
int choice;
BusStop* foundNode;
switch (choice) {
case 1:
addNode(root);
break;
case 2:
preOrderTraversal(root);
break;
case 3:
postOrderTraversal(root);
break;
case 4:
inOrderTraversal(root);
break;
case 5:
if (foundNode == nullptr) {
cout << "Узел с номером " << stopNumber << " не найден" << endl;
else {
printNode(foundNode);
break;
case 6:
updateNode(root, stopNumberToUpdate);
break;
case 7:
break;
case 8:
printTree(root);
cout << "Высота дерева: " << height(root) << endl; // добавляем вывод высоты
break;
case 9:
return 0;
default:
break;
return 0;