Добавил:
vvrstcnho
Рад, если кому-то помог
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабораторные работы С++ (для ИВТ) / Готовые лабы С++ / Лаба5 / Laba 5 (2)
.cpp#include <iostream>
#include <locale>
#include <vector>
using namespace std;
class TreeNode {
protected:
int data;
public:
TreeNode(int d) : data(d) {}
virtual ~TreeNode() {}
virtual void print() const = 0;
};
class BinaryTreeNode : public TreeNode {
BinaryTreeNode* left;
BinaryTreeNode* right;
public:
BinaryTreeNode(int d) : TreeNode(d), left(nullptr), right(nullptr) {}
void setLeft(BinaryTreeNode* node) { left = node; }
void setRight(BinaryTreeNode* node) { right = node; }
void print() const override {
cout << data << " ";
if (left) left->print();
if (right) right->print();
}
};
class NaryTreeNode : public TreeNode {
vector<NaryTreeNode*> children;
public:
NaryTreeNode(int d) : TreeNode(d) {}
void addChild(NaryTreeNode* node) {
children.push_back(node);
}
void print() const override {
cout << data << " ";
for (auto child : children) {
child->print();
}
}
};
int main() {
setlocale(LC_ALL, "ru_RU.UTF-8");
BinaryTreeNode* root1 = new BinaryTreeNode(1);
root1->setLeft(new BinaryTreeNode(2));
root1->setRight(new BinaryTreeNode(3));
cout << "Бинарное дерево: ";
root1->print();
cout << endl;
NaryTreeNode* root2 = new NaryTreeNode(1);
root2->addChild(new NaryTreeNode(2));
root2->addChild(new NaryTreeNode(3));
root2->addChild(new NaryTreeNode(4));
cout << "N-арное дерево: ";
root2->print();
cout << endl;
return 0;
}
Соседние файлы в папке Лаба5
