Я пытаюсь реализовать двоичное дерево на C ++ без использования указателей.
class node{
public:
int val;
node left;
node right;
};
Это дает
error: field ‘left’ has incomplete type ‘node’
Однако, если я напишу это
class node{
public:
int value;
vector<node> children;
};
Код компилируется просто отлично.
Что не так с первым подходом?
Кроме того, почему большинство реализаций, которые я вижу в C ++ для двоичных деревьев, используют указатели? Разве не рекомендуется избегать указателей и связанных с ними ошибок / сложности?