Курсовая работа: Реализация АВЛ–деревьев через классы объектно–ориентированного программирования

{

AVLTreeNode<char> *a, *b, *c, *d, *e;

e = new AVLTreeNode<char>('E', NULL, NULL, 0);

d = new AVLTreeNode<char>('D', NULL, NULL, 0);

c = new AVLTreeNode<char>('C', e, NULL, -1);

b = new AVLTreeNode<char>('B', NULL, d, 1);

a = new AVLTreeNode<char>('A', b, c, 0);

root = a;

}

Реализация класса AVLTreeNode.

Конструктор класса AVLTreeNode вызывает конструктор базового класса и инициализирует balanceFactor.

// Конструктор инициализирует balanceFactor и базовый класс

// Начальные значения полей указателей по умолчанию, равные NULL

// инициализируют узел как лист

template <class T>

AVLTreeNode<T>::AVLTreeNode (const T& item,

AVLTreeNode<T> *lptr, AVLTreeNode<T> *rptr, int balfac):

TreeNode<T>(item, lptr, rptr), balanceFactor(balfac)

{}

Методы Left и Right в классе AVLTreeNode упрощают доступ к полям данных. При попытке обратиться к левому сыну с помощью метода Left базового класса возвращается указатель на объект типа TreeNode. Чтобы получить указатель на узел АВЛ - дерева, требуется преобразование типов.

Например:

AVLTreeNode<T> *p, *q;

q = p->Left(); // недопустимая операция

q = (AVLTreeNode<T> *)p->Left(); // необходимое приведение типа

Во избежание постоянного преобразования типа указателей мы определяем методы Left и Right для класса AVLTreeNode, возвращающие указатели на объекты типа AVLTreeNode.

template <class T>.

AVLTreeNode<T>* AVLTreeNode::Left(void)

{

return ((AVLTreeNode<T> *)left;

К-во Просмотров: 485
Бесплатно скачать Курсовая работа: Реализация АВЛ–деревьев через классы объектно–ориентированного программирования