stl listesinin ilk düğümünü bir ikili ağaç düğümüne atama çalışıyorum ... Karşılaştığım sorun stl listelenen işlevlerde bir araç görmüyorum bunu yapmama izin vermek için. Örneğinstl listesinin ilk düğümüne erişme
: Aşağıdaki liste oluşturursanız :
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);
liste olmalıdır: 10,20,30,40,50,60,70 ...
Benim sorum , listenin ilk düğümüne yeni bir düğüm (özellikle ikili ağaç düğümü kullanıyorum) atamanın bir yolu var mı. Listeyi bir ikili ağaca dönüştüren bir işleve geçmek için tamsayı değerine düğüm değerine ihtiyacım var.
Bu bilinen nedenlerle işe yaramadı: Yeni bir o ilk düğüm atamak için bir yol olup olmadığını bir düğüm değeri bir tamsayı atamak için çalışıyor olarak
binary_tree_node<Item> *node = list.front();
ama sadece merak ettim düğümü.
Bu
şimdi sizi, Yani sınıftabinary_tree_node<T>
bir yapıcı hale ben
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' nedir? özel sınıfın mı? – Jarod42
Ne yapmaya çalışıyorsun? ikili ağaç oluştur İkili ağaç düğümünde 'std :: list'ünü kullanın? Düğümleri içermek için 'std :: list'ünü kullanın? –
Bu ders için kullanılan ders kitabı yazarı tarafından yazılmış özel bir şablon sınıfı uygulaması. @ Jarod42 –