MyTetra Share
Делитесь знаниями!
Дерево, композиция
Время создания: 13.06.2020 19:41
Раздел: C++ - Примеры кода - Работа на уроке
Запись: Shut913/Tetra-notes-Programming/master/base/15920665050uxl8azpbt/text.html на raw.githubusercontent.com

примечание - ошибка в delete key не копируется

#include <iostream>

using namespace std;

//

//typedef unsigned int uint;

//

//template<class T>

//struct TreeItem

//{

// T item;

// int key;

// TreeItem* parent;

// TreeItem* left;

// TreeItem* right;

//};

//

//template<class T>

//class Tree

//{

//private:

// TreeItem<T>* root;

// uint count;

//public:

// Tree();

// ~Tree() { Clear(); }

//

// void Clear();

//

// uint GetCount();

// bool IsEmpty();

//

// void Insert(const T& item, uint key);

// void Delete(TreeItem<T>* node);

//

// TreeItem<T>* GetRoot() const { return root; }

//

// void Print(TreeItem<T>* node);

//

// TreeItem<T>* Search(TreeItem<T>* node, uint key);

// TreeItem<T>* GetMax(TreeItem<T>* node);

// TreeItem<T>* GetMin(TreeItem<T>* node);

// TreeItem<T>* GetPrev(TreeItem<T>* node);

// TreeItem<T>* GetNext(TreeItem<T>* node);

//};

//

//template <class T>

//Tree<T>::Tree()

//{

// root = nullptr;

// count = 0;

//}

//

//template <class T>

//void Tree<T>::Clear()

//{

// Delete(root);

//}

//

//template <class T>

//void Tree<T>::Insert(const T& item, uint key)

//{

// TreeItem<T>* x = new TreeItem<T>;

// x->item = item;

// x->key = key;

// x->left = 0;

// x->right = 0;

//

// TreeItem<T>* y = 0, * node = root;

//

// while (node != 0)

// {

// y = node;

// if (x->key < node->key)

// node = node->left;

// else

// node = node->right;

// }

//

// x->parent = y;

//

// if (y == 0)

// root = x;

// else if (x->key < y->key)

// y->left = x;

// else

// y->right = x;

//

// count++;

//}

//

//template<class T>

//uint Tree<T>::GetCount() { return count; }

//

//template<class T>

//bool Tree<T>::IsEmpty() { return count == 0; }

//

//template <class T>

//void Tree<T>::Delete(TreeItem<T>* node)

//{

// if (node)

// {

// TreeItem<T>* x, * y;

//

// if (node->left == 0 || node->right == 0)

// y = node;

// else

// y = GetNext(node);

//

// if (y->left)

// x = y->left;

// else

// x = y->right;

//

// if (x)

// x->parent = y->parent;

//

// if (!y->parent)

// root = x;

// else if (y == y->parent->left)

// y->parent->left = x;

// else

// y->parent->right = x;

//

// if (y != node)

// node->item = y->item;

//

// delete y;

//

// count--;

// }

//}

//

//template <class T>

//TreeItem<T>* Tree<T>::GetNext(TreeItem<T>* node)

//{

// TreeItem<T>* y = 0;

// if (node != 0)

// {

// if (node->right != 0)

// return GetMin(node->right);

//

// y = node->parent;

// while (y != 0 && node == y->right)

// {

// node = y;

// y = y->parent;

// }

// }

// return y;

//}

//

//template <class T>

//void Tree<T>::Print(TreeItem<T>* node)

//{

// if (node)

// {

// Print(node->left);

// cout << node->key << " : " << node->item << endl;

// Print(node->right);

// }

//}

//

//template <class T>

//TreeItem<T>* Tree<T>::Search(TreeItem<T>* node, uint key)

//{

// while (node != 0 && key != node->key)

// {

// if (key < node->key)

// node = node->left;

// else

// node = node->right;

// }

// return node;

//}

//

//template <class T>

//TreeItem<T>* Tree<T>::GetMin(TreeItem<T>* node)

//{

// if (node != 0)

// while (node->left != 0)

// node = node->left;

// return node;

//}

//

//template <class T>

//TreeItem<T>* Tree<T>::GetMax(TreeItem<T>* node)

//{

// if (node != 0)

// while (node->right != 0)

// node = node->right;

// return node;

//}

//

//template <class T>

//TreeItem<T>* Tree<T>::GetPrev(TreeItem<T>* node)

//{

// TreeItem<T>* y = 0;

// if (node != 0)

// {

// if (node->left != 0)

// return GetMax(node->left);

//

// y = node->parent;

// while (y != 0 && node == y->left)

// {

// node = y;

// y = y->parent;

// }

// }

// return y;

//}

//

//void main()

//{

// Tree<int> tree;

// tree.Insert(3456, 4);

// tree.Insert(876, 12);

// tree.Insert(34, 3);

// tree.Insert(876, 8);

// tree.Insert(234, 10);

//

// tree.Print(tree.GetRoot());

//

// tree.Delete(tree.Search(tree.GetRoot(), 8));

//

// cout << "\n\n";

// tree.Print(tree.GetRoot());

//}


///////

// -- вложенный тип

// == композиция

// 1. Элемент является частью объекта

// 2. Элемент может принадлежать только 1 объекту за 1 раз

// 3. Элемент управляется объектом

// 4. Элемент не знает о существовании объекта

class Point

{

private:

int _x;

int _y;

public:

Point() : _x{}, _y{} {}

Point(int x, int y) : _x{x}, _y{y} {}


void set(int x, int y)

{

_x = x;

_y = y;

}


void print()

{

std::cout << _x << " " << _y;

}

};


class Unit

{

private:

int _age;

Point _p;

public:

Unit(const int& age, const Point& p) : _age{ age }, _p{ p } {}

};

Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования