Добавил:
Рад, если кому-то помог Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
0
Добавлен:
01.11.2025
Размер:
1.67 Кб
Скачать
#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