2013-04-18 3 views
0

У нас есть проект класса для реализации дерева AVL. Вот два очень общая реализация:Реализация дерева AVL с узлами или без узлов

template<class T> 
class AVLTree { 
    int key; 
    int height; 
    int BF; 
    T data; 
    AVLTree<T>* father, leftSon, rightSon; 
. 
. 
. 
} 

друг сказал мне, что я действительно должен использовать Узлы, но он был не в состоянии объяснить, почему. Так вот второй реализации, который я видел во многих местах (с помощью Node):

template<class T> 
class AVLTree { 
    int key; 
    int height; 
    int BF; 
    T data; 
    Node* father, leftSon, rightSon; 

    class Node { 
    int key; 
    int height; 
    int BF; 
    T data; 
    Node* father, leftSon, rightSon; 
    } 
. 
. 
. 
} 

Что на самом деле разница? Является ли моя реализация невозможной с точки зрения компилятора?

+0

Во второй версии вы не должны иметь трех переменных Node * в AVLTree - только один (для корневого узла). – davmac

ответ

1

Технически вы правы, и узлы не нужны, хотя помните, что C++ - это язык ООП, а объект, который вы хотите, - это AVLTree, который состоит из узлов.

+0

спасибо! всегда рад помочь :) – Infested

Смежные вопросы