Я пытаюсь назначить первый узел списка stl двоичному узлу дерева ... Проблема, с которой я столкнулся, заключается в том, что я не вижу инструмент в перечисленных выше функциях stl чтобы позволить мне это сделать.Доступ к первому узлу списка stl
Например: Если я создаю следующий список:
list<int> L;
L.push_front(10);
L.push_back(20);
L.push_back(30);
L.push_back(40);
L.push_back(50);
L.push_back(60);
L.push_back(70);
Список должен быть: 10,20,30,40,50,60,70 ...
Мой вопрос , есть способ назначить новый узел (в частности, я использую узел двоичного дерева) для первого узла списка. Мне нужно значение узла, а не целочисленное значение, чтобы перейти к функции, которая преобразует список в двоичное дерево.
Это не работает по очевидным причинам:
binary_tree_node<Item> *node = list.front();
, как он пытается присвоить целое число в значение узла, но мне было просто интересно, если есть способ, чтобы назначить этот первый узел на новый узел.
Это функция, которую я пытаюсь использовать
template <class Item>
binary_tree_node<Item>* convert(list<Item> &list, int start, int end)
{
binary_tree_node<Item> *node = list.front();
if (start > end) return NULL;
int mid = start + (end - start)/2;
binary_tree_node<Item>* leftChild = convert(list, start, mid-1);
binary_tree_node<Item>* parent = new binary_tree_node<Item> (node->data());
parent->left() = leftChild;
node = node->next();
parent->right() = convert(list, mid+1, end);
return parent;
}
template <class Item>
binary_tree_node<Item>* convert(list<Item> &head, int n)
{
return convert(head, 0, n-1);
}
Что такое 'binary_tree_node'? ваш собственный класс? – Jarod42
Что вы пытаетесь сделать? создать двоичное дерево? Использовать 'std :: list' в вашем двоичном дереве? Использовать 'std :: list', чтобы содержать узлы? –
- это специальная реализация класса шаблонов, написанная автором учебника, используемого для этого курса. @ Jarod42 –