-
Data: 2018-03-15 01:57:02
Temat: Jak usunąć najlepiej element z drzewa ?
Od: Borneq <b...@a...hidden.pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]podczas gdy nie można wołać a.remove() a co najwyżej usuwać dzieci tego
węzła.
kod:
#include <memory>
#include <string>
#include <vector>
#include <assert.h>
using namespace std;
class Node
{
vector<shared_ptr<Node>> childs;
Node* parent = nullptr;//not shared_ptr! because of memory leaks of
circular dependency
int level = 0;
public:
string name;
Node(string name)
{
this->name = name;
}
~Node()
{
printf("delete %s\n",name.c_str());
}
shared_ptr<Node> clone()
{
shared_ptr<Node> result = make_shared<Node>(name+"a");
return result;
}
void erase()
{
printf("erase from %s\n", name.c_str());
childs.clear();
}
void Add(shared_ptr<Node> node)
{
shared_ptr<Node> clone = node->clone();
childs.push_back(clone);
clone->parent = this;
clone->level = level+1;
for (size_t i = 0; i<node->childs.size(); i++)
clone->Add(node->childs[i]);
}
shared_ptr<Node>& at(int index)
{
return childs[index];
}
void print()
{
for (int i = 0; i<level; i++)
printf(" ");
printf("%s->",name.c_str());
if (parent) printf("%s", parent->name.c_str());
printf("\n");
for (size_t i=0; i<childs.size(); i++)
childs[i]->print();
}
};
int main()
{
shared_ptr<Node>root,rootB;
root = make_shared<Node>("1");
root->Add(make_shared<Node>("2"));
root->Add(make_shared<Node>("3"));
root->at(0)->Add(make_shared<Node>("4"));
root->at(0)->Add(make_shared<Node>("5"));
root->at(1)->Add(make_shared<Node>("6"));
root->at(1)->Add(make_shared<Node>("7"));
rootB = make_shared<Node>("1b");
rootB->Add(make_shared<Node>("2b"));
rootB->Add(make_shared<Node>("3b"));
rootB->at(0)->Add(make_shared<Node>("4b"));
rootB->at(0)->Add(make_shared<Node>("5b"));
rootB->at(1)->Add(make_shared<Node>("6b"));
rootB->at(1)->Add(make_shared<Node>("7b"));
// node->Add(root);
//root->print();printf("\n");
//rootB->print(); printf("\n");
root->at(0)->Add(rootB);
rootB = nullptr;
//rootB->at(0)->Add(rootB);//tu cykl?
root->print();
root->at(0)->erase();
root->print();
return 0;
}
Następne wpisy z tego wątku
- 15.03.18 08:10 Tomasz Kaczanowski
- 15.03.18 11:35 Borneq
- 15.03.18 12:30 Tomasz Kaczanowski
- 15.03.18 13:34 M.M.
- 15.03.18 13:48 Tomasz Kaczanowski
- 15.03.18 14:17 Borneq
- 15.03.18 14:24 Tomasz Kaczanowski
- 15.03.18 14:54 Borneq
- 15.03.18 18:43 M.M.
- 15.03.18 19:31 Borneq
- 15.03.18 22:15 M.M.
- 15.03.18 22:41 Borneq
- 15.03.18 23:00 M.M.
- 15.03.18 23:46 Borneq
- 16.03.18 00:07 Borneq
Najnowsze wątki z tej grupy
- NOWY: 2025-09-29 Alg., Strukt. Danych i Tech. Prog. - komentarz.pdf
- Na grupie comp.os.linux.advocacy CrudeSausage twierdzi, że Micro$lop używa SI do szyfrowania formatu dok. XML
- Błąd w Sofcie Powodem Wymiany 3 Duńskich Fregat Typu Iver Huitfeldt
- Grok zaczął nadużywać wulgaryzmów i wprost obrażać niektóre znane osoby
- Can you activate BMW 48V 10Ah Li-Ion battery, connecting to CAN-USB laptop interface ?
- We Wrocławiu ruszyła Odra 5, pierwszy w Polsce komputer kwantowy z nadprzewodzącymi kubitami
- Ada-Europe - AEiC 2025 early registration deadline imminent
- John Carmack twierdzi, że gdyby gry były optymalizowane, to wystarczyły by stare kompy
- Ada-Europe Int.Conf. Reliable Software Technologies, AEiC 2025
- Linuks od wer. 6.15 przestanie wspierać procesory 486 i będzie wymagać min. Pentium
- ,,Polski przemysł jest w stanie agonalnym" - podkreślił dobitnie, wskazując na brak zamówień.
- Rewolucja w debugowaniu!!! SI analizuje zrzuty pamięci systemu M$ Windows!!!
- Brednie w wiki - hasło Dehomag
- Perfidne ataki krakerów z KRLD na skrypciarzy JS i Pajton
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
Najnowsze wątki
- 2025-11-09 Węże do tlenu medycznego
- 2025-11-09 Więcej miejsca na buspasach :-)
- 2025-11-08 kable zawieraja skrobie?
- 2025-11-08 Klip testowy, jak sie to używa
- 2025-11-08 Warszawa => Senior Cloud Engineer - AWS <=
- 2025-11-08 Pewnie za malo zarabial, to sie musial odstresowac
- 2025-11-08 Uszkodzenie na parkingu a odpowiedzialność sprawcy z OC
- 2025-11-08 Środa Wielkopolska => SAP FI/CO Konsultant wewnętrzny <=
- 2025-11-08 Gdańsk => Senior Software Developer C++ <=
- 2025-11-08 Uszkodzenie na parkingu a odpowiedzialność sprawcy z OC
- 2025-11-08 Warszawa => Programista Microsoft Dynamics 365 Finance & Operations (D
- 2025-11-07 Warszawa => International Freight Forwarder <=
- 2025-11-07 Warszawa => C Programmer <=
- 2025-11-07 Warszawa => Starszy Programista C <=
- 2025-11-07 Warszawa => Senior Programmer C <=




Elektromobilność dojrzewa. Auta elektryczne kupujemy z rozsądku, nie dla idei